Windows批处理:find命令和errorlevel

时间:2016-04-12 15:38:20

标签: windows batch-file cmd nssm

我试图使用find命令和errorlevel来评估命令的结果

Setlocal EnableDelayedExpansion
...
nssm status MyService | find "SERVICE_STOPPED"
if !errorlevel! equ 0 (
   echo MyService is not running
)

因为我知道命令" nssm status MyService"返回" SERVICE_STOPPED"我希望find将errorlevel设置为0。 相反,它设置为1。 为什么呢?

1 个答案:

答案 0 :(得分:1)

删除的答案显示nssm输出的编码(我没有,所以我无法验证)。每个字母都用两个字节编码(第二个字节为0x00)。所以这个(公认的丑陋)解决方法应该有效:

nssm status MyService | findstr "S.E.R.V.I.C.E._.S.T.O.P.P.E.D"
if !errorlevel! equ 0 (
    echo MyService is not running
)