在批处理文件中捕获命令的完整输出(仅捕获第一个字符)

时间:2018-07-12 10:20:10

标签: windows batch-file cmd

由于nssm,我必须创建一个批处理文件,在其中检查我的服务状态。我使用的命令是nssm status MyService,它返回SERVICE_STOPPEDSERVICE_RUNNING。我对批处理文件没有很多经验,所以我遵循了一些SO答案来实现我想要的文件,这是我的文件:

FOR /F "tokens=*" %%F IN ('nssm status MyService') DO (
SET var=%%F
)
ECHO %var%

但是当我回显输出时,我只会得到预期输出的第一个字符。

var等于S

我尝试更改令牌和delims参数,但是没有成功,它总是返回S

我错过了什么?是FOR / F参数吗?还是我如何设置变量?

2 个答案:

答案 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
    )
  )
)