我有一个 .bat,它Exit 1
在发生故障时会发出“ ”,这会关闭 cmd 窗口并阻止用户查看错误的详细信息。
我想强制 cmd 保持打开状态以查看消息。
我知道我可以EXIT /B 1
在.bat 中使用它来不自动关闭 cmd,而只中断脚本。
/B When used in a batch script, this option will exit only the script (or subroutine) but not CMD.EXE If executed on the command-line it will close CMD.exe
但是这个 .bat 是工具生成的,所以我不能简单地修改它。显然,出于同样的原因,我不能简单地在其中添加“PAUSE”。
我还知道“cmd /k”,它可以避免在运行脚本后关闭 cmd,但是它只是在脚本成功执行后保持 cmd 打开,如果发出“EXIT”功能,它不会阻止 cmd 关闭。
答案1
如果您的 CMD 使用另一个 CMD 调用批处理,CMD /C xyz.bat
则exit 1
bat 文件内部不应关闭原始 CMD 窗口,并且确保如果没有达到,/C
子 CMD 将在 BAT 文件末尾自行关闭。exit
然后,您可以检查批处理的错误级别并处理在顶级 CMD 中想要的任何操作 - 例如,timeout /t 10 && exit
如果您希望在给用户时间阅读错误消息后关闭它:
cmd /c a.bat
IF %ERRORLEVEL% NEQ 0 (echo ERROR && timeout /t 10 && exit)
答案2
为什么不使用类似的东西:
if not defined !var! (
echo Source folder missing^^!
goto :eof
)
退出批处理文件但不退出 CMD。与批处理相同functions
。