当用户单击退出时执行批处理代码

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)

我在谷歌和论坛上找不到它,所以我想也许你们可以帮助我。提前致谢,尼尔斯

Aac*_*ini 6

这对我有用:

@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 取消;无论如何,控件在原始执行中启动它的行之后返回。