我一直在這個問題上停留了一段時間,並且在幫助網站上查找如何批量編程只會讓我更加困惑。在批處理文件中分支程序輸出
上下文是我想識別文件夾中的哪些文件是xml有效的,並將所有無效文件附加到特定文件以供進一步處理。
這樣做我已經使用xmlstarlet並使用下面的命令我已經能夠識別哪些是有效的,並將輸出管道輸出到我的批處理文件。現在
xml val *.xml | myscript.bat
,我想要做的是找出哪些是有效的,爲了做到這一點我需要解析的xml.exe其輸出如下:
20100319.xml - valid
20090915.xml - valid
20090915.xml - valid
20090915.xml - valid
20090915.xml - invalid
那麼什麼實際上,我需要在每一行上分支來查看最後7個字符是否「無效」,如果是,請將xml文件附加到我的結果文件中。
試着這樣做,我建立了你將在下面找到的腳本。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "tokens=*" %%a in ('more') do (
set full=%%a
set /p prefix=!full:~-7!
if %prefix% == "invalid" (type %%a result.xml) else (echo "valid file")
)
現在是特定於我的問題首先我得到的錯誤
(type was unexpected at this time.
然後,如果我刪除if分支和echo %prefix%
取代它,我得到這樣的輸出:
- validECHO is off.
- validECHO is off.
- validECHO is off.
- validECHO is off.
invalidECHO is off.
你能幫我創建一個分支,將XML文件附加到我的結果文件並擺脫ECHO關閉?打開@ECHO off
,導致將代碼本身打印到屏幕上。
感謝您的幫助!
亞歷
您應該刪除'/ p'在'設置/ P PREFIX =全:!〜-7',你如果要更改%'前綴%==「invalid」(類型%%結果...「if」前綴!「==」無效「(echo %% a> result.xml)else(echo」有效文件「) – jeb 2012-02-20 12:56:17
'ECHO關閉'的答案在'set /?'-delayed擴展 – jeb 2012-02-20 12:58:04
中描述。另外,需要使用附加形式的重定向:'>> result.xml' – dbenham 2012-02-20 14:41:16