不知道您说的关闭当前CMD窗口,是怎样的一个关法?是让脚本自己运行到退出,还是手动点击右上角的X进行关闭?
如果是脚本自行退出的,那么在退出前写上一段执行taskkill的相关命令即可。
而通过手动点击X进行关闭,那么这个代码就复杂了。先要在脚本开头写一个执行另一个bat的代码,用于监测您当前cmd窗口,只有在监测bat监测不到当前CMD窗口后再执行taskkill命令。
追问对的,就是你说的这个思路,手动点X关闭的时候如何才能做到这种效果
追答@echo off & cd /d "%~dp0"
::设置当前脚本窗口标题名(必须)
set Title=批处理脚本模板文件 By 依梦琴瑶
::设置要强制关闭的进程
set Proc=WinRar.exe
title %title%
call :CheckCMDWindows "%Title%" "%Proc%"
echo 这里区域写您正常要执行的脚本代码
pause
exit
:CheckCMDWindows
(echo @echo off ^& title 监测窗口并结束程序 By 依梦琴瑶
echo mode 70,5 ^& color 0c
echo for /f "tokens=2 delims=," %%%%a in ^('tasklist /fo csv /nh /v ^^^| find /i ",""%~1"""'^) do set "PID=%%%%~a"
echo for /f "tokens=2 delims=," %%%%a in ^('tasklist /fo csv /nh /v ^^^| find /i ",""管理员: %~1"""'^) do set "PID=%%%%~a"
echo :Loop
echo cls ^& echo 正在监测中,请勿关闭窗口。
echo echo 被监测的窗口:"%~1",PID:%%PID%%
echo echo 被终止的进程:"%~2"
echo tasklist /fi "PID eq %%PID%%" /fo csv /nh ^| find /i ",""%%PID%%""," 2^>nul ^&^& goto Loop
echo taskkill /f /im "%~2"
echo exit)>"%tmp%\CheckCMDWindows.bat"
start "" /min "%tmp%\CheckCMDWindows.bat"
goto :eof
追问谢谢大神,不过小白表示找不到分段啊,能以结束adb.exe为例帮我写一个然后传给我吗??
追答什么叫“找不到分段”?
结束指定进程,我的代码中有文字注释啊!直接根据注释,把对应位置的进程名换成您要结束的进程即可。