批处理查找非自身的CMD进程

也就是我已经运行了一个A.bat批处理了,可是我又运行了一个B.bat批处理,因为他们都是调用CMD的,希望B.bat可以在发现有一个非自身的CMD后,执行GotoY命令... 也就是我已经运行了一个A.bat批处理了,可是我又运行了一个B.bat批处理,因为他们都是调用CMD的,希望B.bat可以在发现有一个非自身的CMD后,执行Goto Y命令,没有的话执行Got W 。taskkill /f /IM CMD.exe是不可取的,应为它会把自身也列进去。另外我想用Pid应该是可以的,只是不知道如何实现。 展开
 我来答
_AlwaysGo
2013-05-28 · TA获得超过184个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:78.3万
展开全部

@REM 2012/05/22

@TITLE ONLYONE

@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION


SET Commander=ONLYONE

SET CHECK_Name=CMD.exe


:CHECK

TASKLIST /NH /FI "WINDOWTITLE NE %Commander%" 2>NUL | FINDSTR /I "%CHECK_Name%" 1>NUL

SET Temp=%errorlevel%

IF "!Temp!"=="0" GOTO A

IF "!Temp!"=="1" GOTO B

:A

ECHO.发现 非销袜本身BAT正在运行

ECHO.按任意键 结束非本身正姿基在运行BAT&PAUSE>NUL

TASKKILL /FI "WINDOWTITLE NE %Commander%" /IM "CMD.EXE">NUL 2>NUL 

PAUSE

EXIT

:B

ECHO.没有 非本身BAT正在亏册激运行

PAUSE

EXIT

注意事项

  1. 实现原理 通过判断窗口标题 来实现

  2. 确保 批处理 没有通过VBS后台运行

  3. 希望能对你有所帮助

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yyykkkyyyy
2013-05-27 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3293万
展开全部
如果仅是伏团银判断是否运行有别的cmd 统计cmd.exe进程的个数是否大于1就行了缺宴或如
for /f %%i in ('tasklist^|find /i "cmd.exe"')do set/a n+=1
if %n% gtr 1 (goto :Y) else goto :w
追问
你的思路挺好的,现在我又有一个想法,如果我知道了一个程序的PID值,那该如何根据PID值判断,这个程序是否存在,谢谢了。如果不会的话也没关系,你的方法也可以的了。只是我想知道如何根据PID判断。这个分就给你了。
追答
那你怎么提前知道一个程序的PID呢?可能没明白你的意思  据我理解,当一个程序启动时就系统就启动了一个进程,并为其自动分配一个PID号,临时的“挂号”之前并不对应,正如提问情况那样cmd.exe为名的进程可以有多个 但每个进程的PID却是唯一的,要准确中止某个进程当然应该用PID,我回答过一个用批处理去关闭另外的批处理的问题,就是根据PID来排除本批处理进程的 http://zhidao.baidu.com/question/270709693.html
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈哥深惠通勤
2013-05-28 · TA获得超过1176个赞
知道小有建树答主
回答量:1909
采纳率:33%
帮助的人:834万
展开全部
你没说要干掉运行的a.bat啊,只判断是否发现cmd在运行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式