4 windows cmd batch-file exit batch-processing
我正在进行一些代码测试,我偶然发现了一个无法找到或修复的问题。我的问题是:
如果用户不小心关闭了cmd窗口,我想在它实际关闭之前执行批处理代码。例如:
我运行脚本 A.bat 。当用户想要退出时,我希望它删除我的 B.bat,然后关闭窗口。
代码可能如下所示:
@ECHO OFF
echo Welcome to A.bat
del B.bat (when user exits the window)
Run Code Online (Sandbox Code Playgroud)
我在谷歌和论坛上找不到它,所以我想也许你们可以帮助我。提前致谢,尼尔斯
这对我有用:
@ECHO OFF
if "%1" equ "Restarted" goto %1
start "" /WAIT /B "%~F0" Restarted
del B.bat
goto :EOF
:Restarted
echo Welcome to A.bat
echo/
echo Press any key to end this program and delete B.bat file
echo (or just close this window via exit button)
pause
exit
Run Code Online (Sandbox Code Playgroud)
编辑:添加了一些解释
该start命令在新的 cmd.exe 会话中重新启动相同的批处理文件;/B 开关在同一窗口中打开它,/WAIT 开关使原始文件等待,直到新文件结束。新的批处理文件必须以以下结尾exit才能终止新的 cmd.exe 会话(因为它是使用 /K 开关启动的)。无论新的 cmd.exe 会话是因为该exit命令正常结束还是因为它被红色 X 取消;无论如何,控件在原始执行中启动它的行之后返回。