我想知道如何使用批处理文件检查服务是否正在运行
e.g。
如果xxxx服务正在运行 去开始stage2.bat 否则转到echo服务未运行
任何帮助将不胜感激
谢谢
答案 0 :(得分:12)
与How to check if a process is running via a batch script类似
编辑:
从帖子中添加了另外一条声明:
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
)
答案 1 :(得分:3)
阅读这篇文章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)
答案 2 :(得分:0)
@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
答案 3 :(得分:0)
我的解决方案,因为在Windows7下,如果ERRORLEVEL 1
成功与否,则findstr
不起作用且errorlevel为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
)
答案 4 :(得分:0)
首先,您可能需要管理员权限,而所有示例都没有。如果您尚未使我们满意,您可以立即开始
无论如何,这就是我的做法。当我的蓝牙停止工作时
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
答案 5 :(得分:0)
如果有人希望在使用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
)
)
)