サービスの停止が完了するまでバッチファイルを停止しますか?

StackOverflow https://stackoverflow.com/questions/2874911

  •  03-10-2019
  •  | 
  •  

質問

Windowsサービスを停止するためにバッチファイルを使用しています。私は使用しています sc コマンドですが、以下の質問を考えると、私は他のアイデアにオープンです。問題は、バッチファイルが進行することです その間 サービスは停止しています( stop への議論 sc だけです リクエスト 停止 - そうではありません 待つ 停止のために)。

バッチファイルをに変更するにはどうすればよいですか 続行しないでください 停留所まで 完了?

役に立ちましたか?

解決

使用は使用できます NET stop, 、これは同期です。つまり、サービスが停止するまで待ちます。

見る - ネットストップ

他のヒント

sc stop webdriveservice
:loop
sc query webdriveservice | find "STOPPED"
if errorlevel 1 (
  timeout 1
  goto loop
)

上記のように、Net Stopはサービスに停止コマンドを送信しますが、サービスに特定の時間(20秒程度の観察)が必要な場合、ネットストップでは、戻る前にサービスが実際に停止するのを待ちません。

サービスが停止するまで実際にバッチファイルを一時停止するには、これらのスレッドで概説されているようなアプローチを使用する必要があります。

バッチファイルを介してサービスが実行されているかどうかを確認し、実行していない場合は起動する方法は?

リモートWindowsサービスを停止/起動し、開く/閉じるのを待つ

私は信じている net stop [Service] 先に進む前に、サービスが完全に停止するまで待つ必要があります。 sc stop [Service] 「停止」メッセージをサービスに送信するだけです。

これは少し粗雑ですが、本質的にサービスを再起動するために毎日のバッチファイルをスケジュールできるようにするために私のために機能しました。

ネットストップ[サービス

:再試行する

タイムアウト /t 10 /ノブブレイク

ネットスタート[サービス

if%errorlevel%neq 0 goto tryagain

このコードスニペットで、サービスが正常に開始されない場合、これが無限のループになる可能性があることを理解しています。私は基本的に、ネットストップコマンドが許すものよりもサービスが停止するのに時間がかかる場合があるタイムアウトを使用して問題を回避する方法を基本的に示したかっただけです。

使用 && コマンド間のシンボル。 && シンボルは、次のコマンドに進む前に前のコマンドを完了するのを待ちます。

すべてのコマンドは同じコマンド行にある必要があります。必要なコマンドを連続して使用できます。

あなたも使用することができます pause 指図。これにより、次の手順に進む前に、キーを押すように依頼します。

例えば:

sc qdescription "MyServiceName" && echo. && sc stop "MyServiceName" && echo. && echo          [ "MyServiceName" service stopped ] && echo. && pause
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top