2012-07-10 236 views
1

我想知道是否有人可以幫我編寫一個相對簡單的批處理文件命令,我可以使用它來使我的批處理文件的其餘部分脫離。我在一個支持許多產品的支持小組工作,並且只有一個人明白XML配置文件。我所試圖做的是以下幾點: 這裏是從配置文件的摘錄:FINDSTR命令在一個批處理文件中顯示變量輸出

<!-- FILEDROP SETTINGS --> 
    <!-- metadataType = X - XML; F - Flat file; E - embedded in filename; B - embedded PDF with bookmarks --> 
     <add key="metadataType" value="E" /> 

我所試圖做的是創造一些GUI(批處理文件),用戶可以運行。在運行批處理文件時,會提示用戶輸入要搜索的文件的名稱。在這個例子中,文件名是importer.config。我想該批處理文件搜索的字符串

<add key="metadataType" value="E" /> 

我想爲它取的價值,在這種情況下,引號「E」,輸出的東西之間的DOS窗口,讓用戶知道,該組件使用嵌入文件名中的元數據。當然,如果值爲F,那麼這個組件使用來自平面文件的元數據....我只是試圖將它拼出來向用戶反映,而不是讓用戶搜索這個大的大型配置文件,因爲他們從來沒有似乎知道在哪裏看。

任何人都可以提供幫助將是一個巨大的巨大幫助,因爲這將是我的代碼的其餘部分向用戶顯示值的基礎。我曾經想過,使用正則表達式和FINDSTR可能是最好的,但我已經嘗試了很多東西,不能讓它工作

類似:(?<=<add key="metadataType" value=")\w

這將查找字符串,我需要再乘值(E在這種情況下)...我只是不知道如何寫出存儲這個或如何輸出它不同的東西....任何幫助將不勝感激!

+0

「laments turn」???我只能猜測你的意思是「外行的條款」 – dbenham 2012-07-10 04:45:53

回答

2

FINDSTR的正則表達式支持受到嚴重限制,並且在傳統實現中您不習慣使用什麼。通過在命令窗口中輸入help findstrfindstr /?來閱讀文檔。我也推薦閱讀What are the undocumented features and limitations of the Windows FINDSTR command?。正則表達式怪異的描述朝向答案的底部。

您可以下載並使用awk,grep,sed或perl等Windows版本。或者你可以使用VBScript或JScript。

用本機批解析XML是一場噩夢。你可以嘗試下面的東西。它不是很健壯,但它在大多數情況下都能正常工作:

@echo off 
setlocal enableDelayedExpansion 
for /f "delims=" %%A in ('findstr /rc:"\<add key=[\"\"]metadataType[\"\"] value=[\"\"]" "fileName.txt"') do set "ln=%%A" 
set ^"ln=!ln:*"metadataType" value=!" 
for /f delims^=^=^" %%A in ("!ln!") do set value=%%A 
echo value=!value! 
+0

哇,你說得對,解析XML數據似乎很痛苦....當我研究這個時,我看到了grep和awk版本。我一定會更深入地研究這一點。非常感謝你的回覆 – 2012-07-10 12:40:32

相關問題