bat start 启动一个子线程,如图,
当前bat怎么把ext.bat给结束点,而自己保持继续运行
taskkill /f /FI "IMAGENAME eq cmd.exe" 会把自己也结束掉,
taskkill /f /FI "IMAGENAME eq cmd.exe - ext.bat"
信息: 没有运行的带有指定标准的任务。
第1个回答 2012-11-17
我喜欢来简单的,因为,本来就是为了方便。
@echo off
title sy
taskkill /f /im cmd.exe /fi "windowtitle eq sy" >nul
这个程序会把除了自身以外的所有bat程序关闭。当然咯,这里我给它的名字是sy,你可以改成。
总之,把这句话,加到你程序最后面就ok啦!本回答被网友采纳
@echo off
title sy
taskkill /f /im cmd.exe /fi "windowtitle eq sy" >nul
这个程序会把除了自身以外的所有bat程序关闭。当然咯,这里我给它的名字是sy,你可以改成。
总之,把这句话,加到你程序最后面就ok啦!本回答被网友采纳
第2个回答 2012-11-16
直接用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
经验说明,子进程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
第3个回答 2012-11-17
根据标题栏信息删除
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"本回答被提问者采纳
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"本回答被提问者采纳
第4个回答 2012-11-18
让ext.bat goto :eof