找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 42122|回复: 5

[文件操作] 批处理命令tasklist怎样检索进程并判断?

[复制链接]
发表于 2012-9-8 13:41:11 | 显示全部楼层 |阅读模式
我用下面的命令行,能侦测到系统当前是否存在 alg.exe 这一进程,
  1. TASKLIST /NH /FI "imagename eq alg.exe"
复制代码
我希望的后续任务是:如果该进程存在,则GOTO A;如果该进程未启动,则GOTO B。
似乎 If eorrlevel 是最方便实现这一点的命令了,可是该如何将 If errorlevel 与上面的命令行相连接呢?
谢谢
发表于 2012-9-8 15:31:54 | 显示全部楼层
  1. TASKLIST /NH /FI "imagename eq alg.exe"&&goto :a||goto :b
复制代码
发表于 2012-9-9 01:28:44 | 显示全部楼层

  1. @echo off
  2. tasklist|find "alg.exe"
  3. if "%errorlevel%"=="0" (goto A) else (goto B)
  4. pause

  5. :A
  6. echo.存在!
  7. pause

  8. :B
  9. echo.不存在!
  10. pause

复制代码
虽然楼上的哥们回答的更好,但是我还是想做下解答,哈哈。这个更直观吧
 楼主| 发表于 2012-9-9 01:50:51 | 显示全部楼层
本帖最后由 mebanna 于 2012-9-9 01:51 编辑

回复 2# QIAOXINGXING

回复 3# Bearxy


    感谢两位的回复。

怪我前面没说清楚:
TASKLIST /NH /FI "imagename eq alg.exe" 执行后,不会返回不同的errorlevel值——无论alg.exe进程存在与否,%errorlevel%的返回值都是“0”
所以,该有什么办法来让系统返回不同的%errorlevel%值呢?
发表于 2012-9-9 03:55:34 | 显示全部楼层
  1. TASKLIST|findstr /bc:"alg.exe "&&goto A||goto B
复制代码
发表于 2012-9-9 12:09:14 | 显示全部楼层
本帖最后由 Bearxy 于 2012-9-9 12:13 编辑

回复 4# mebanna
我个人的理解哈,语言组织能力不怎样,就当抛砖引玉了。
你只用tasklist命令,那么errorlevel判断的返回值当然是执行tasklist是否成功的信息, 执行成功了返回值就是0,没成功就是1。但是在除了一些极个别的特殊的情况,TASKILST能不成功吗?
所以用到FIND啊,用FIND在进程列表里去查询你要的进程信息,成功返回值为0,不成功则为1.

很明显的判断FIND的返回值要比判断tasklist要更方便些吧?

解决你的问题否?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 16:45 , Processed in 0.018870 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表