Чтобы установить переменную для вывода команды, используйте for /f:
for /f "tokens=*" %%a in ('command') do set _CmdResult=%%a
Проблема в том, что для использования канала в команде вам нужно экранировать его с помощью escape-символа командной строки: ^ , поэтому: ^| ,
for /f "tokens=*" %%a in ('sc \\192.168.1.1 query <ServiceName> ^| findstr STATUS') do set _CmdResult=%%a
Теперь я не уверен, какую версию Windows вы используете, но мои попытки выполнить запрос sc в Windows 7 дают следующий результат:
>sc query SamSs
SERVICE_NAME: SamSs
        TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 4  RUNNING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
Это означает, что потребуется findstr STATE , который выдает:
>sc query SamSs | findstr STATE
        STATE              : 4  RUNNING
Теперь, в примере выше, tokens=* означает, что каждый токен установлен в переменную %%a , где токены разделены пробелами. В этом случае вы можете использовать либо третий токен (4), либо четвертый токен (RUNNING). Кстати, с тестированием, 1 соответствует STOPPED для меня.
Чтобы упростить задачу, я буду использовать строку RUNNING в этом примере. Итак, мы хотим четвертый токен.
for /f "tokens=4" %%a in ('sc \\192.168.1.1 query <ServiceName> ^| findstr STATE') do set _CmdResult=%%a
Конечно, в зависимости от того, что выводит ваш sc query , ваш может немного отличаться, поэтому следуйте тому, как я туда попал, и вносите изменения по мере необходимости. Или опубликуйте в комментариях вывод вашего sc query и я внесу необходимые изменения.
Чтобы проверить значение, вы можете использовать:
if %_CmdResult%==STOPPED (
    REM do something here
)
В вашем случае цикл будет выглядеть примерно так.
:loop
for /f "tokens=*" %%a in ('sc \\192.168.1.1 query <ServiceName> ^| findstr STATUS') do set _CmdResult=%%a
if %_CmdResult%==STOPPED (
    sc \\192.168.1.1 start <ServiceName>
    goto endloop
)
timeout /t 5
goto loop
:endloop
Обратите внимание, что timeout - это утилита, включенная только в Windows Vista и более поздних версиях. Windows XP может использовать что-то вроде ping 1.1.1.1 -n 1 -w 5000 > nul .