我正在进行一些代码测试,我偶然发现了一个我无法找到或修复的问题。我的问题是:
如果用户不小心关闭了 cmd 窗口,我想在它实际关闭之前执行批处理代码。 例如:
我运行脚本 A.bat 。当用户想要退出时,我希望它删除我的 B.bat 然后关闭窗口。
代码可能如下所示:
@ECHO OFF
echo Welcome to A.bat
del B.bat (when user exits the window)
我在谷歌和论坛上找不到它,所以我想也许你们可以帮助我。提前致谢,尼尔斯
最佳答案
这对我有用:
@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
编辑:添加了一些解释
start
命令在新的 cmd.exe session 中重新启动同一个批处理文件;/B 开关在同一窗口中打开它,/WAIT 开关使原始文件等待新文件结束。新的批处理文件必须以 exit
结束,以便终止新的 cmd.exe session (因为它是用/K 开关启动的)。不管新的 cmd.exe session 是因为 exit
命令正常结束还是因为它被红色 X 取消了;在任何情况下,控件都会在最初执行时启动它的行之后返回。
关于windows - 当用户点击退出时执行批处理代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32011862/