【发布时间】:2015-10-07 12:28:15
【问题描述】:
这是我的代码:
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 行,则错误不存在。
这段代码有什么问题?
您好。
【问题讨论】:
-
您应该添加一个错误可重现的示例。您发布的代码没有任何错误。也许真正的代码有一些未转义的特殊符号。如果您尝试在循环内多次使用变量,也可能会显示此类无意义的错误,在这种情况下应使用delayed expansion。
-
命令的最大长度为 8 KB(约 8190 个字符)。我建议您以另一种方式执行这些多重测试。例如:在文件中插入所有搜索字符串并使用
findstr。 -
它适用于 findstr 选项。我已经有了包含所有搜索字符串的文件,所以我使用了这个解决方案。但是,我在包含搜索短语的文件的输出中有一行。例如: findstr /c:"%%a" Makefile IF errorlevel 1 ( rem do smth ) 我的输出(在控制台中): TESTS_LIST += test1 TESTS_LIST += test1892 有没有可能这条线不会出现在输出中执行脚本后?
标签: windows batch-file windows-7 scripting