2011-12-28 4 views
0

Windowsサービスのさまざまなステータスに対して異なるコマンドを実行する必要があります。CMD:IFステートメント

例:(私のWindowsサービスがOracleServiceXEある)

OracleServiceXERUNNINGであれば、私はCommand1を

を実行したいOracleServiceXESTOPPEDであれば、私は、このためのコードの下に書いてcommand2の

を実行したいです。正しく動作していません。 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 

あるときには、ABCの部分のコマンドを実行しますか?

答えて

2

findで検索する場合、0が見つかった場合は戻り値、見つからない場合は1が戻り値です。 findコマンドの後にecho %errorlevel%で確認できます。 また、if ... thenはcmd構文(おそらく4nt?)ではありません。 だから、それを書くことができます。IF ERRORLEVEL nIF ERRORLEVEL >= n

を意味する

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

注意もIF ERRORLEVELの順序は重要です

関連する問題