命令的语法不正确 - 如果for循环中有条件,则为多个

时间:2015-10-07 12:28:16

标签: windows batch-file windows-7 scripting

这是我的代码:

for %%a in (%TESTS%) do (
    IF not "%%a" == "tests/xxxx/yyyy/zzzz/test1" (
    IF not "%%a" == "tests/qqqq/ssss/bbbb/test1892" (
    and so on...
    )
    )
)

如果我有大约一百个IF条件,我就会收到这样的错误: "命令的语法不正确" 如果我注释掉几条(任何)IF线,则错误消失。

此代码有什么问题?

问候。

1 个答案:

答案 0 :(得分:0)

最可能的是,你超过命令行/块的8192个字符的限制 所以你可以尝试以下方法:

for %%a in (%TESTS%) do (
    call :SUB "%%~a"
)
exit /B

:SUB
if "%~1"=="tests/xxxx/yyyy/zzzz/test1" exit /B
if "%~1"=="tests/qqqq/ssss/bbbb/test1892" exit /B
rem and so on...
echo do your action(s) here (done only in NONE of the listed strings match)!
exit /B

if语句被反转,因此不需要嵌套 由于if行被转移到子例程:SUB,因此它们不再是过长的for命令行/块的一部分。