防止脚本中的“退出”命令关闭 Cmd

防止脚本中的“退出”命令关闭 Cmd

我有一个 .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.batexit 1bat 文件内部不应关闭原始 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

相关内容