我喜欢来简单的,因为,批处理本来就是为了方便。
@echo off
title sy
taskkill /f /im cmd.exe /fi "windowtitle eq sy" >nul
这个程序会把除了自身以外的所有bat程序关闭。当然咯,这里我给它的名字是sy,你可以改成你的名字。
总之,把这句话,加到你程序最后面就ok啦!
直接用pid删除,我试了下可行。
经验说明,子进程cmd的pid会大于父进程cmd的pid,所以你可以加上 pid gt 200?
200?当然是不确定的,所以你得查看,tasklist |findstr cmd 对于你的情况,第一个就是父进程cmd的pid,若果是交互模式,你自己查看了再删。如果你要自动处理,可以用 for 解析获取出第二行的pid,就是子进程ext.bat的pid
亲测通过
@echo off&&setlocal enabledelayedexpansion
set /a n=1
for /f "tokens=2" %%i in ('tasklist^|findstr cmd') do (
if !n!==2 taskkill /pid %%i
set /a n+=1
)
pause
根据标题栏信息删除
taskkill /f /FI "windowstitle eq c:\windows\system32\cmd.exe - ext.bat"
最好简化一下,start 的时候设置一下标题栏,或者在ext.bat 里用title命令设置标题栏。
start "ext" ext.bat
taskkill /f /FI "windowstitle eq ext"
让ext.bat goto :eof