我想知道如何使用批处理文件检查服务是否正在运行。
例如:
如果xxxx服务正在运行,则转到start stage2.bat。
否则,进入echo Service not running。
任何帮助将不胜感激。
谢谢。
例如:
如果xxxx服务正在运行,则转到start stage2.bat。
否则,进入echo Service not running。
任何帮助将不胜感激。
谢谢。
编辑:
从该帖子中,添加了一个else语句:
tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL
if "%ERRORLEVEL%"=="0" (
call stage2.bat
) else (
echo Program is not running
)
对于一个服务:
sc query "ServiceName" | find "RUNNING"
if "%ERRORLEVEL%"=="0" (
call stage2.bat
) else (
echo Program is not running
)
阅读这篇文章http://support.microsoft.com/kb/251192,并查看SC /?
然后尝试:
SC QUERY
编辑:为了自动化检查,将结果导向FIND并查找RUNNING。
SC QUERY %1 | FIND "STATE" | FIND "RUNNING" >nul
IF ERRORLEVEL 1 (echo NOT RUNNING ) ELSE (echo RUNNING)
@echo off
color 1F
@sc query >%COMPUTERNAME%_START.TXT
ECHO REPORT MISSING INSTALL SERVICES >%COMPUTERNAME%_MISSING.TXT
find /I "AcPrfMgrSvc" %COMPUTERNAME%_START.TXT >nul
IF ERRORLEVEL 1 NET START "AcPrfMgrSvc"
IF ERRORLEVEL 1 ECHO AcPrfMgrSvc >>%COMPUTERNAME%_MISSING.TXT
首先,您可能需要管理员权限,而且没有任何示例涉及此问题。如果您尚未使用nircmd,现在可以开始使用
这是我做的方式。当我的蓝牙停止工作时
set _ServiceName=CSRBtAudioService
call :SrvStat %_ServiceName%
goto :SomeWhere
:SrvStat
sc query "%1" | find "RUNNING"
if %Errorlevel% EQU 0 ( echo: restarting %1 & nircmd elevatecmd service restart %1
) else ( echo: starting %1 & nircmd elevatecmd service start %1 )
exit /b
我的解决方案是,因为在Windows7下仅使用ERRORLEVEL 1
无法工作,并且无论findstr
是否成功,错误级别都为0。
在我的情况下,我正在寻找以java.exe开头的东西,比如说HELLO.jar[java.exe的参数]
wmic PROCESS LIST FULL | findstr /I java.exe | findstr /I HELLO.jar
if ErrorLevel 1 (
Echo OK
msg "%username%" HELLO.jar not started
Pause
) else (
Echo ERR
msg "%username%" HELLO.jar already running
Pause
exit
)
如果有人想在使用SC的远程系统上执行此操作。注意:在额外的“if /I“%%H””语句中添加了示例用于进一步使用。
SC \\host query
例子:
:: This example prints the status of a remote service
SC \\%REMOTE_SYSTEM% query %SERVICE% | FIND "STATE" >nul
IF ERRORLEVEL 1 (
echo RESULT: %SERVICE% is [UNKNOWN]
) ELSE (
for /F "tokens=3 delims=: " %%H in ('SC \\%REMOTE_SYSTEM% query "%SERVICE%" ^| findstr " STATE"') do (
if /I "%%H"=="STOPPED" (
echo RESULT: %SERVICE% is %%H
) else (
echo RESULT: %SERVICE% is %%H
)
)
)