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

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

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

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

TOP

  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
复制代码
虽然楼上的哥们回答的更好,但是我还是想做下解答,哈哈。这个更直观吧

TOP

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

回复 2# QIAOXINGXING

回复 3# Bearxy


    感谢两位的回复。

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

TOP

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

TOP

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

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

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

解决你的问题否?

TOP

返回列表