Batch file 如何批量从查询中提取数据
我正在尝试检查服务Batch file 如何批量从查询中提取数据,batch-file,psexec,Batch File,Psexec,我正在尝试检查服务ACR网桥是否正在运行,是否启动 cd C:\Users\ET012364\Desktop\PSEXEC psservice \\ccapps query "ACR BRIDGE" pause 我知道我可以使用错误级别和停止-启动命令的组合来实现这一点。但是,我更感兴趣的是了解如何操作此命令返回的数据 SERVICE_NAME: ACRBridge DISPLAY_NAME: ACR Bridge ACR Bridge for controlling both Master
ACR网桥
是否正在运行,是否启动
cd C:\Users\ET012364\Desktop\PSEXEC
psservice \\ccapps query "ACR BRIDGE"
pause
我知道我可以使用错误级别和停止-启动命令的组合来实现这一点。但是,我更感兴趣的是了解如何操作此命令返回的数据
SERVICE_NAME: ACRBridge
DISPLAY_NAME: ACR Bridge
ACR Bridge for controlling both Master and Standby Collect Corp Recorders. If t
he service is down, it will restart after one minute.
GROUP : someorder
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0 ms
这是返回的内容,我想从中提取状态
值
这就是我最终使用的代码。我认为这是最简单的解决方案
@echo off
cd C:\Users\ET012364\Desktop\PSEXEC
psservice \\ccapps query "ACR BRIDGE" | find "RUNNING"
if "%ERRORLEVEL%"=="0" (
echo ACR BRIDGE is running
) else (
echo ACR BRIDGE on CCAPPS is not running
pause
)
psservice \\ccapps query "DIALERMESSAGEMONITOR"| find "RUNNING"
if "%ERRORLEVEL%"=="0" (
echo Dialer MessageMonitor is running
) else (
echo Dialer MessageMonitor on CCAPPS is not running
pause
)
试试这个:
for /f "tokens=1-3 delims=: " %%i in ('psservice \\ccapps query "ACR BRIDGE" 2^>nul') do if "%%i"=="STATE" set "state=%%j %%k"
REM ^----put a tabstop after the ":"
echo %state%
在回答你的问题时,这是对上述评论的润色。这是未经测试的
@echo off
cd /d "C:\Users\ET012364\Desktop\PSEXEC"
psservice \\ccapps query "ACR BRIDGE" | FIND "STATE" | FIND "RUNNING" >nul || net start "ACR BRIDGE"
我相信解决方案是使用以下命令的errorlevel。“>psservice\\ccapps查询“ACR桥”|查找“状态”|“查找“正在运行”