2017-03-09 347 views
0

我們想創建一個批處理腳本,爲我們的每個.xml文件運行一個命令。該命令應該對每個不以_m結尾的文件運行。我們嘗試使用forfiles來瀏覽每個文件,但我們不知道如何使用來處理它。如何在forfiles批處理腳本中執行多個命令

這是我們目前不工作的腳本,我們試圖通過每個文件。識別文件名,並以子字符串結尾,以便在_m結束時不運行該命令。

forfiles /p /source /m *.xml do (

set "[email protected]" 
set "extension=_m.xml" 
set "extended=%filename%extension" 


IF NOT %filename:~-2%=="_m"(
    ssoadm import-entity --cot something--realm something--spec saml2 -m @file -x %extended --adminid something--password-file password --debug 
) 

感謝您的幫助!

+1

只需使用內置的'for'命令而不是外部'forfiles'命令,那麼你就可以使用'do'。 –

回答

1
for /f "delims=" %%a in (
'dir /b /a-d *.xml^|findstr /v /e /i /L "_m.xml" ' 
) do (
    ssoadm import-entity --cot something--realm something--spec saml2 -m "%%a" -x %extended --adminid something--password-file password --debug 
) 

/b基本形式(僅名稱)/a-d沒有數據夾在dir每個條目;找到名稱也/v/e/i不區分大小寫/L字面意思是「-m.xml」,分配發現%%a

不知道什麼ssoadm不完整的名字,但

%%~na將產生的基名文件和%%~xa的擴展名。

您的代碼可能會奏效,但你需要調用delayed expansion(SO搜索)和修改,以適應delayedexpansion方法的代碼(如記錄了很多很多倍SO)


for /f "delims=" %%a in (
'dir /b /a-d *.xml^|findstr /v /e /i /L "_m.xml" ' 
) do (
    echo(%%~na 
    echo(%%~xa 
    echo(%%~nxa 
    echo(%%a 
    echo(%%a %%~na_M%%~xa 
) 

。按照你的意願挑選零件/常量,並將它們放在一起meccano風格。

+0

感謝您的幫助。我仍然不明白我想要的。 說如果我有四個文件:file1.xml,file1_m.xml,file2.xml和file2_m.xml,我需要在每個命令中使用這些對。我怎麼做?這是我想要運行的命令: 'somecommand -x file1.xml -m file1_m.xml' and 'somecommand -x file2.xml -m file2_m.xml' – Jinxen