2016-04-12 30 views
2

Ben "SERVICE_STOPPED" komutu "NSSM durum MyService" döner bildiğimiz için bir komutaWindows toplu: komuta ve errorlevel

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

sonucunu değerlendirmek için bulmak komutu ve errorlevel kullanmaya çalışıyorum bulmak errorlevel'i 0 olarak ayarlamayı beklerdi. Bunun yerine 1'e ayarlandı. Neden?

+0

Denediniz mi? Nssm durumu MyService | daha fazla | "SERVICE_STOPPED" yi buldunuz mu? Bence "daha fazla" bazı dönüştürme yeteneklerine sahip ... – aschipfl

cevap

1

Silinmiş bir yanıt nssm çıktısının kodlamasını gösterdi (bende yok, bu yüzden doğrulayamıyorum). Her harf iki bayt ile kodlanır (ikincisi 0x00). Yani bu (kuşkusuz çirkin) bir geçici çözüm çalışması:

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 
)