CMD: IF заявления - PullRequest
       12

CMD: IF заявления

0 голосов
/ 28 декабря 2011

Мне нужно выполнять разные команды в разных состояниях службы Windows.

пример: (Мой сервис Windows - OracleServiceXE)

если OracleServiceXE равно RUNNING я хочу выполнить команду1

если OracleServiceXE равно STOPPED я хочу выполнить команду2

Я написал ниже код для этого. но это не работает должным образом. он выполняет команды в части abc, когда OracleServiceXE равен RUNNING

sc query "OracleServiceXE" | find /i "RUNNING"
IF ERRORLEVEL 1 then GOTO abc
IF ERRORLEVEL 4 then GOTO bcd
:abc
echo aa 
PING 1.1.1.1 -n 1 -w 6000>nul
goto :EOF
:bcd
echo bb 
PING 1.1.1.1 -n 1 -w 12000>nul

что не так?

1 Ответ

2 голосов
/ 28 декабря 2011

При поиске с поиском, 0 - это возвращаемое значение, когда найдено, 1 - это возвращаемое значение, когда не найдено. Вы можете проверить это с помощью echo %errorlevel% после команды find. Кроме того, if ... then не является синтаксисом cmd (возможно, 4nt?). Итак, можно написать:

sc query "OracleServiceXE" | find /i "RUNNING"
IF ERRORLEVEL 1 GOTO stopped
IF ERRORLEVEL 0 GOTO running

Обратите внимание, что порядок IF ERRORLEVEL важен, так как IF ERRORLEVEL n означает IF ERRORLEVEL >= n

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...