をfor
介して呼び出すことにより、ループを含む1行のコマンドを実行しようとしていcmd /C
ます。
コマンド自体がfor
ループを実行してサービス(この場合はJBoss)が実行されているかどうかを確認し、サービスが停止している場合はエラーコードで終了します。
for /f "tokens=3 delims=: " %H in ('sc query JBossEAP7 ^| findstr "STATE"') do if "%H"=="STOPPED" exit /B 1
これは、cmd
ウィンドウに入力するか、.bat
ファイルで使用する場合(の代わり%
に使用する場合)に正常に機能します%%
。
しかし、私がそれを使用してそれを呼び出そうとするとcmd /C
(このように
cmd /C for /f "tokens=3 delims=: " %H in ('sc query JBossEAP7 ^| findstr "STATE"') do if "%H"=="STOPPED" exit /B 1
エラーが発生します| was unexpected at this time
。
cmd
バッチファイルを使用せずにこれを呼び出す方法を誰かに教えてもらえますか?
cmd /c " commands "
コマンドで使用できます:
cmd /C "for /f "tokens=3 delims=: " %H in ('sc query JBossEAP7 ^| findstr "STATE"') do if "%H"=="STOPPED" exit /B 1"
または、for
ループコマンドで"sc query JBossEAP7 | findstr "STATE""
:
cmd /C for /f "tokens=3 delims=: " %H in ('"sc query JBossEAP7 | findstr "STATE""') do if "%H"=="STOPPED" exit /B 1
&&
。cmd /c sc query JBossEAP7 | findstr STATE.*STOPPED && exit /b 1
cmd /c "sc query JBossEAP7 | findstr STATE.*STOPPED && exit /b 1"
cmd/csc query JBossEAP7|findstr STATE.*STOPPED&&exit /b 1"
cmd/c|(sc query JBossEAP7 | find "STOPPED" && exit/b 1)
cmd/c| sc query JBossEAP7 | find "STOPPED" && exit/b 1
cmd/c"sc query JBossEAP7|find "STOPPED"&&exit/b 1"
cmd/c|sc query JBossEAP7|find "STOPPED"&&exit/b 1
Obs .:コマンドはあなたが持っているのと同じ行にあります:findstr STATE.*STOPPED
rem :: STATE + One_or_More_Characters + STOPPED
> sc query vds
SERVICE_NAME: vds
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
> sc query vds | findstr STATE.*STOPPED
STATE : 1 STOPPED
|----------------------|
STATE + .* + STOPPED
rem :: Omitting output >nul and using end End Of Line in findstr /e STOPPED
> sc query vds | findstr /e STOPPED>nul
STATE : 1
STOPPED
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加