Command line CMD:IF语句

Command line CMD:IF语句,command-line,windows-services,cmd,Command Line,Windows Services,Cmd,我需要在windows服务的不同状态下执行不同的命令 示例:(我的windows服务是OracleServiceXE) 如果OracleServiceXE正在运行我想执行command1 如果OracleServiceXE已停止 我写了下面的代码。但它不能正常工作。当OracleServiceXE运行时,它在abc部分执行命令 sc query "OracleServiceXE" | find /i "RUNNING" IF ERRORLEVEL 1 then GOTO abc IF ERROR

我需要在windows服务的不同状态下执行不同的命令

示例:(我的windows服务是OracleServiceXE)

如果
OracleServiceXE
正在
运行
我想执行command1

如果
OracleServiceXE
已停止

我写了下面的代码。但它不能正常工作。当
OracleServiceXE
运行时,它在abc部分执行命令

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

怎么了?

使用“查找”进行搜索时,0是找到时的返回值,1是未找到时的返回值。 您可以在find命令之后使用echo%errorlevel%
检查这一点。 另外,
如果。。。那么
不是cmd语法(可能是4nt?)。 因此,可以这样写:

sc query "OracleServiceXE" | find /i "RUNNING"
IF ERRORLEVEL 1 GOTO stopped
IF ERRORLEVEL 0 GOTO running
另请注意,
如果ERRORLEVEL
的顺序很重要,因为
如果ERRORLEVEL n
表示
如果ERRORLEVEL>=n