2013-02-18 5 views
0

В w7 Я хочу получить статус службы с помощью psservice, так как я хочу сделать это на удаленном компьютере позже.пакетный скрипт получить статус службы

Я пытаюсь сначала запустить пакетный скрипт, работающий на локальной машине.

У меня есть две проблемы: Первая проблема заключается в том, что «D: /PsService.exe query Server» будет запрашивать ВСЕ обслуживание, содержащее имя «Сервер». Я хочу только запросить одну конкретную услугу (в этом примере с именем «Сервер».

Другая большая проблема заключается в том, что мой пакетный скрипт вообще не работает. Он просто «умирает» (окно CMD сразу закрывается без выполните команду pause, из-за которой очень сложно отлаживать).

Я хочу сохранить статус службы в переменной, которую я буду использовать позже, чтобы сравнить пример (IF% Status% EQ «RUNNING»).

Мой код до сих пор:

FOR /F token=3 %%i IN ('D:/PsService.exe query Server 2> NUL | find /I "STATE"') DO (SET Status=%%i) 
echo %Status% 
pause 

Почему CMD просто умирает и что я делаю неправильно?

+0

Вместо 'pause' вы можете использовать' установки/р MYVARIABLE = Прервать этот сценарий [у | н] ?: 'ждать ввода пользователя. Вы можете сделать свою жизнь намного проще с помощью PowerShell. – Filburt

+1

Чтобы узнать, почему он умирает, вы должны открыть окно cmd и запустить там свою партию. Btw это синтаксическая ошибка в цикле for. Вам нужно избежать перенаправления, а также трубы. – jeb

+1

В партии, вы бежите с помощью карат,^ – Lizz

ответ

1

После будет работать для вас

@ECho off 
    for /F "tokens=3 delims=: " %%H in ('D:/PsService.exe query "SERVICE" ^| findstr "  STATE"') do echo %%H 
+0

Он работает! которые решили самую большую проблему. Вы не знаете, как запросить один и только один сервис? Попробуйте D: /PsService.exe запрос «Сервер» Я все еще запрашиваю все службы, которые начинаются на «Сервере», пока я хочу только запросить конкретную службу (в моем примере) с именем «Сервис» (и не более того). – user1432032

+0

Привет, По ошибке я набираю сервер в своем коде, просто замените сервер на «Сервис». и я надеюсь, что это сработает – Shirulkar

1
echo off 
set /P srvname="Enter the servername :" 
echo %srvname% 
set /P srvice="Enter the Service name :" 
echo %srvice% 
psservice.exe \\%srvname% query %srvice% >a.txt 
a.txt 

pause 
Смежные вопросы