[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]如何用极简BAT代码判断进程数?

本帖最后由 pZjVa0 于 2013-7-27 12:27 编辑

给大家出个小题,我找了一下网上判断进程数量的代码不多,本人入门菜鸟懂得不多,想问各位大大如果要判断进程数量,用最少的代码应该如何实现?

例子:
判断QQ数目
当QQ.exe数量大于2时,打开calc.exe计算器
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. set /a n=0
  3. for /f "delims=" %%a in ('tasklist^|findstr /i "qq.exe"') do set /a n+=1
  4. if %n% gtr 2 calc.exe
复制代码
1

评分人数

***共同提高***

TOP

回复 2# batman


    谢谢batman版主,传说中的n值又开始进行计算了

TOP

回复 2# batman


    这个代码是不是少了一个循环?如果单纯这样的话不是只会+1就跑了吗?

TOP

回复 2# batman


    忘了...for本身有循环

TOP

回复 2# batman


    这个代码没有对进程名完成匹配,如果出现hkcmd.exe也会被计算进去

TOP

本帖最后由 CrLf 于 2013-7-26 03:01 编辑

回复 2# batman


可以用 find /c 简化成:
  1. @echo off
  2. for /f "delims=" %%a in ('tasklist /fo csv^|find /i /c ""qq.exe""') do if %%a gtr 2 calc.exe
复制代码
或者这样:
  1. @echo off
  2. for /f "skip=2" %%a in ('tasklist /nh /fi "imagename eq qq.exe"') do calc.exe&goto next
  3. :next
复制代码
要极简就类似这样:
  1. @echo off
  2. tasklist /fi "imagename eq qq.exe"|more +3|findstr .&&calc.exe
复制代码
1

评分人数

TOP

回复 6# pZjVa0


    麻烦兄弟先测试再发表结论。。。
***共同提高***

TOP

本帖最后由 pZjVa0 于 2013-7-26 08:54 编辑

回复 7# CrLf

代码1
  1. 找不到文件 - QQ.EXE
  2. 请按任意键继续. . .
复制代码
应该修改成(去掉一层双引号)
  1. @echo off
  2.     for /f "delims=" %%a in ('tasklist /fo csv^|find /i /c "cmd.exe"') do if %%a gtr 2 calc.exe
  3. pause
复制代码
但是进程数判断还是不正确,例如我要判断cmd.exe的数量,就算我只打开两个窗口,进程数还是会显示4
  1. @echo off
  2.    for /f "delims=" %%a in ('tasklist /fo csv^|find /i /c "cmd.exe"') do echo %a%
  3. pause
复制代码
如何可以解决这个问题

::::::::::::::::我是万恶的分割线::::::::::::::::

请您能不能解释一下 代码3

我很感兴趣,但是不明白原理,从第三行开始显示,然后查找"."吗?那如何进行数量判断?

TOP

批处理自身会产生进程

TOP

回复 10# lxzzr


    如果关闭所有cmd.exe进程情况下,单纯运行一个P,检测到3个,XP下会有两个。

一个cmd.exe算一个P,那其余多出来的是肿么回事呢?

TOP

回复 11# pZjVa0


    有一个 cmd 是 for /f 产生的,刚给人解释过:
http://bbs.bathome.net/redirect. ... 6&fromuid=30406

TOP

回复 12# CrLf


    好的。我大概懂判断了

TOP

回复 12# CrLf


    虽然问题基本解决..但是无法精确判断导致在不同环境下出现兼容性问题,WIN7下检测到3个,xp下有2个

TOP

兼容性问题大家有办法解决不?

TOP

返回列表