所以我一直试图弄清楚这一点,但没有任何事情发生在我身上。我把它缩小到一个小案子,所以请让我知道你的想法。
我有一个文件目录(1-a.txt和1-b.txt)和一个这样的批处理文件:
for %%X in (1) do ^
fc %%X-a.txt %%X-b.txt > tmp.txt &^
if errorlevel 0 (echo 5) else (echo 6) &^
echo 7
基本上,如果文件相同,我希望它回显5,如果它们不同则我希望回显6,7。 然而,它总是回声5.回声7完全被忽略。
有什么想法吗?
答案 0 :(得分:2)
if errorlevel
为真。它总是大于或等于比较:
C:\>help if
Performs conditional processing in batch programs.
...
ERRORLEVEL number Specifies a true condition if the last program run
returned an exit code equal to or greater than the number
specified.
通常你只需要切换分支:
if errorlevel 1 (echo 6) else (echo 5)
在您的情况下,我还建议您使用括号分组语句:
for %%X in (1) do (
fc %%X-a.txt %%X-b.txt > tmp.txt
if errorlevel 1 (echo 6) else (echo 5)
echo 7
)
作为程序调用后显式if
的另一个选项,还有运算符根据前一个命令的结果运行另一个命令:
fc %%X-a.txt %%X-b.txt > tmp.txt && echo 5 || echo 6