如果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%