如果被调用的命令执行`exit`,如何避免Windows cmd终端退出?
问题描述:
在一个Windows cmd终端中,通过cmd,我调用命令脚本(.cmd),但其中一些执行exit [code]
而没有/B
,从而我的Windows终端被终止。如果被调用的命令执行`exit`,如何避免Windows cmd终端退出?
如何避免Windows cmd终端退出如果调用命令执行exit
没有/B
?
答
您可以调用scriptname.cmd
与cmd /c
。这样exit
将退出您的cmd /c
调用,而不是祖先控制台进程。
Test1.bat:
@echo off & setlocal
echo Exiting.
exit 0
Test2.bat:
@echo off & setlocal
echo Invoking Test1.bat
cmd /c Test1.bat
echo Still running!
Test2.bat的输出:
调用Test1.bat
退出。
仍在运行!
...并且控制台窗口保持打开状态。
谢谢,'cmd/c'处理得很好,所以我会跳过使用'call'。 – EquipDev
如果Test1.bat设置了您想要保留的环境变量,那么除非脚本在当前shell中运行,否则不会设置它们。这是'CALL'启用的。您将失去该功能。 .bat脚本应该用'EXIT/B'修正。 – lit