|
原帖由 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语句块部分) |
|