web-dev-qa-db-ja.com

バッチスクリプトのスリープ関数

デスクトップでプログラムを実行するバッチファイルを作成していますxyz.exe 4時間後、1時間閉じてプロセスを繰り返します。これが私のスクリプトです。

:a
START C:\Users\Mukul\Desktop\xyz.exe
SLEEP 14400
taskkill /F /IM xyz.exe
SLEEP 3600
goto :a

here によると、スクリプトは待機する必要があります。それはまた言う:

SLEEP 10

次のコマンドの実行を10秒遅らせます。そう SLEEP 14400は、実行を4時間遅らせる必要があります。

現在の結果:最初のコマンドが完了するとすぐに次のコマンドが実行されます。

望ましい結果:次のコマンドは、最後のコマンドを実行する前に4時間待機する必要があります。

6
Mukul Chauhan

timeoutを使用することもできます。

次に例を示します。

@echo off
echo Hi
timeout /t 1 /nobreak > nul
  • /tは必須ではありません

  • 1は待機する秒数

  • /nobreakは、ユーザーが待機をスキップできないようにします

  • > nul出力を何にもリダイレクトしないため、何も表示されません

10
LeoDog896

お使いのWindowsバージョンでは、SLEEPコマンドがサポートされていない場合があります。これを試して:

:a
START C:\Users\Mukul\Desktop\xyz.exe
TIMEOUT 14400
taskkill /F /IM xyz.exe
TIMEOUT 3600
goto :a
5
sambul35

最初に:BashとBatchは非常に異なる言語です。
今、答え。
秒とミリ秒を簡単に切り替えられるため、pingコマンドよりもsleepコマンドの方が好きです。

ping -n 11 127.0.0.1>nul

そのコマンドは10秒間一時停止してから再開します。
または:

ping 1.1.1.1 -n 1 -w 10001 >nul

これも10秒間停止しますが、ミリ秒単位です。

いずれかを以下に適合させることができます。

:a
start C:\Users\Mukul\Desktop\xyz.exe
ping -n 14401 127.0.0.1>nul
taskkill /F /IM xyz.exe
ping -n 3601 127.0.0.1>nul
goto a

[〜#〜] disclaimer [〜#〜]:私は持っています[〜#〜] not [〜#〜]最後のコードを試しましたt何かをするために4時間余分に時間があります)。

5
ender_scythe