Command line CMD:IF语句
我需要在windows服务的不同状态下执行不同的命令 示例:(我的windows服务是OracleServiceXE) 如果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
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