|  | 
| 原帖由 dreamneo 于 2011-12-15 21:32 发表  假设要查看是否有notepad.exe进程存在,是不用
 tasklist /fi "imagename eq notepad.exe"
 我用if的errorlevel不行,应该怎么写啊?
 批处理的 ERRORLEVEL  有一套完整的机制,  一般就是能取得完整的 errorlevel  值的.
 
 但在不合理使用 set 命令call 命令.  合 >&; <&  这两个重定向符时是很容易得到错误的值的.(这两个重定向符一般用得比较少.)
 
 同时批处理提供了, "|" ;"&&"; "||"  三个管道符  它们分别代表 继承; 成功值传剃;  非零值传剃(它通常是我们所说的错误传剃,但如果持行程序存在多号句柄,一样是此参数传剃.)
 
 建议程序参数无多号句柄时,用上面的三个管道符
 [曾经我也在无忧遇到过有个人说"||",不是管道符,
 在我的理解"在一整条语句中,它启着'承前启后'的作用, 它就是管道符"
 ]
 
 套用楼上的代码.
 
 原帖由 pznpt 于 2011-12-16 23:10 发表  @echo off
 set a=notepad.exe
 tasklist |find /i "%a%">nul
 if errorlevel 1 (echo %a%进程不存在) else echo %a%进 ...
 复制代码 
set a=notepad.exe
tasklist |find /i "%a%">nul&&echo. %a% 进程存在||echo.%a% 存在.
 最后提一句:  以上三个管道符的 如果应用于语句块的 变量, 请注意思变量延时问题.(如:for 语句的DO语句块部分)
 | 
 |