windows - 当用户点击退出时执行批处理代码

标签 windows batch-file cmd batch-processing exit

我正在进行一些代码测试,我偶然发现了一个我无法找到或修复的问题。我的问题是:

如果用户不小心关闭了 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/

相关文章:

windows - vue-cli-plugin-electron-builder 在新窗口中打开子组件

.net - 如何在 MS Windows 上加载 GTK Sharp 主题

javascript - Firefox 15 中的 ajaking onbeforeunload

batch-file - IF "71"GTR "7000"产生 true

powershell - 如何在 VSTS 中的托管代理上运行或安装工具

windows - 如何从批处理文件中的脚本参数中去除引号?

c++ - 冒充用户访问hives——各种方法,有哪些实际问题?

mysql - 插入mysql

java - JAR 文件如何 self 删除?

cmd - CMD 中的 FINDSTR - 仅整个单词