dus*_*ntp 2 windows cmd batch-file
在批处理文件中,我正在尝试检查服务是否已启动,如果没有,则等待.
现在检查服务是否正在运行,我这样做:
sc query "serviceName" | find /i "RUNNING"
if "%ERRORLEVEL%"=="0" (
echo serviceName is running.
) else (
echo serviceName is not running
)
Run Code Online (Sandbox Code Playgroud)
麻烦是错误级别始终设置为0.可能是因为这个已知的查找错误.有没有其他方法可以检查服务是否已启动,如果没有则等待?
Ele*_*ios 10
您可以使用Findstr而不是Find命令:
sc query "Service name" | findstr /i "RUNNING" 1>nul 2>&1 && (
echo serviceName is running.
) || (
echo serviceName is not running
)
Run Code Online (Sandbox Code Playgroud)
您也可以使用wmic命令执行此操作:
wmic service where name="Service name" get State | Findstr /I "Running" 1>NUL 2>&1 && (
echo serviceName is running.
) || (
echo serviceName is not running
)
Run Code Online (Sandbox Code Playgroud)
另一件需要注意的事情是,在比较数值时,不应该用引号括起表达式"",因此条件应如下所示:
If %ERRORLEVEL% EQU 0 () ELSE ()
Run Code Online (Sandbox Code Playgroud)
如果您不使用Windows NT version 3.1 and Windows NT Advanced Server version 3.1并且您的服务名称不包含,您的代码将正常工作running.
也许它在一个循环中,所以你应该使用这个(或延迟扩展):
sc query "serviceName" | find /i "RUNNING"
if not ERRORLEVEL 1 (
echo serviceName is running.
) else (
echo serviceName is not running
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12371 次 |
| 最近记录: |