由于nssm,我必须创建一个批处理文件,在其中检查我的服务状态。我使用的命令是nssm status MyService
,它返回SERVICE_STOPPED
或SERVICE_RUNNING
。我对批处理文件没有很多经验,所以我遵循了一些SO答案来实现我想要的文件,这是我的文件:
FOR /F "tokens=*" %%F IN ('nssm status MyService') DO (
SET var=%%F
)
ECHO %var%
但是当我回显输出时,我只会得到预期输出的第一个字符。
var等于S
我尝试更改令牌和delims参数,但是没有成功,它总是返回S
我错过了什么?是FOR / F参数吗?还是我如何设置变量?
答案 0 :(得分:1)
for /f "usebackq tokens=2 delims=," %A in (`wmic service where "name='rpcss'" get state /format:csv`) Do echo %A
答案 1 :(得分:1)
这是我解决的方法,问题可能出在NSSM命令行上,而是我使用SC
命令查询@Squashman所提到的服务
set list=service1 service2
for %%a in (%list%) do (
FOR /F "tokens=4" %%F IN ('sc query %%a ^| find "STATE "') DO (
IF %%F NEQ RUNNING (
nssm start %%a
)
)
)