0

所以我一直试图弄清楚这一点,但没有任何结果。我已经把它缩小到一个小案例,所以请让我知道你的想法。

我有一个文件目录(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 被完全忽略。

有什么想法吗?

4

1 回答 1

2

if errorlevel当错误级别至少为 0 时为真。它始终是大于或等于比较:

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
于 2012-06-28T22:47:51.983 回答