2017-03-09 203 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

相关问题