CMD 子程序不会按预期突然结束我的程序

CMD 子程序不会按预期突然结束我的程序

如果oldfile.txt不存在,正在运行下面的批次莫名其妙地最终执行第 8 行,但我不希望这样!

我希望该程序call the CheckErrorCondition子程序并突然退出,因为在这种情况下出现了错误(我现在甚至强制模拟该错误)。

节目仍然不会突然结束18号线正如我期望的那样。

我究竟做错了什么?

这是我的批处理脚本程序:

 1    @echo off
 2    setlocal
 3    :: Rename a file
 4    ren "oldfile.txt" "newfile.txt"
 5    :: Call the subroutine
 6    call :CheckErrorCondition
 7    :: Delete the file
 8    del "newfile.txt"
 9    :: End of script
10    endlocal
11    goto :eof
12    :CheckErrorCondition
13    :: Simulate an error condition
14    set errorCondition=true
15    :: Check the condition using if-else
16    if %errorCondition%==true (
17          echo Error condition detected. Exiting...
18          exit /b 1
19        ) else (
20          echo Condition is not an error. Continuing...
21        )
22    goto :eof

答案1

看来 exit /b 只退出子程序,而不是整个程序。要突然退出整个程序,我必须在第 6 行之后添加以下行(实际上是第二个 exit 语句):

if %errorlevel% neq 0 exit /b %errorlevel%

相关内容