我正在写一个Windows批处理脚本,将安装服务。 首先,我需要找出服务是否已经存在。 如果服务存在,则必须检查状态。 如果状态正在运行,则必须停止并删除该服务。
这是我的代码:test.bat。 我从命令行运行这个。
for /F "tokens=3 delims=: " %%H in ('sc query "IBMLibertyProfile" ^| findstr "STATE" ') do ( if /I "%%H" EQ "RUNNING" ( sc stop "IBMLibertyProfile" ) )
我收到错误:
C:> test1.bat EQ在这个时候是意外的。
- 如何在多个目录中search具有给定扩展名的文件?
- 简单的安装方法需要Windows / Batch Reference吗?
- 从.bat文件安全地杀死一个进程
- 在Windows上findApache服务器的path
- 用Start打开单独的窗口
C:> if / I“%H”EQ“RUNNING”(
如何解决这个错误?
尝试这个:
@rem If the service doesn't exist, exit. @sc query IBMLibertyProfile > NUL 2>&1 @if %ERRORLEVEL% neq 0 @exit /b 0 @rem If the service is already stopped, delete it. @sc query IBMLibertyProfile | findstr /s "STOPPED" > NUL 2>&1 @if %ERRORLEVEL% neq 0 @goto :DeleteService @rem No matter it's state, tell it to stop. @sc stop IBMLibertyProfile @rem Wait for it to stop. @set _WaitLoopCount=0 :StoppedWait @if _WaitLoopCount equ 10 @goto :ServiceWaitTimeout @timeout /t 3 > NUL 2>&1 @sc query IBMLibertyProfile | findstr /s "STOPPED" > NUL 2>&1 @if %ERRORLEVEL% neq 0 @goto :StoppedWait @rem Delete the service and exit. :DeleteService @sc delete IBMLibertyProfile @exit /b 0 :ServiceWaitTimeout @echo Service failed to reach the STOPPED state. Reboot the computer and try again.
注:如果您的服务表现不佳,脚本可能会挂起。 我会把它留给你,以解决如何处理sc删除失败。