Board logo

标题: [文件操作] 批处理命令tasklist怎样检索进程并判断? [打印本页]

作者: mebanna    时间: 2012-9-8 13:41     标题: 批处理命令tasklist怎样检索进程并判断?

我用下面的命令行,能侦测到系统当前是否存在 alg.exe 这一进程,
  1. TASKLIST /NH /FI "imagename eq alg.exe"
复制代码
我希望的后续任务是:如果该进程存在,则GOTO A;如果该进程未启动,则GOTO B。
似乎 If eorrlevel 是最方便实现这一点的命令了,可是该如何将 If errorlevel 与上面的命令行相连接呢?
谢谢
作者: QIAOXINGXING    时间: 2012-9-8 15:31

  1. TASKLIST /NH /FI "imagename eq alg.exe"&&goto :a||goto :b
复制代码

作者: Bearxy    时间: 2012-9-9 01:28

  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
复制代码
虽然楼上的哥们回答的更好,但是我还是想做下解答,哈哈。这个更直观吧
作者: mebanna    时间: 2012-9-9 01:50

本帖最后由 mebanna 于 2012-9-9 01:51 编辑

回复 2# QIAOXINGXING

回复 3# Bearxy


    感谢两位的回复。

怪我前面没说清楚:
TASKLIST /NH /FI "imagename eq alg.exe" 执行后,不会返回不同的errorlevel值——无论alg.exe进程存在与否,%errorlevel%的返回值都是“0”
所以,该有什么办法来让系统返回不同的%errorlevel%值呢?
作者: CrLf    时间: 2012-9-9 03:55

  1. TASKLIST|findstr /bc:"alg.exe "&&goto A||goto B
复制代码

作者: Bearxy    时间: 2012-9-9 12:09

本帖最后由 Bearxy 于 2012-9-9 12:13 编辑

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

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

解决你的问题否?




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2