1. ホーム
  2. python

[解決済み] バッチファイルでのスリーピング

2022-05-10 14:50:44

質問内容

Windows ボックス上で何かを自動化するためにバッチ ファイルを書くとき、その実行を数秒間停止する必要がありました (通常、テスト/待機ループ内で、プロセスが開始するのを待ちます)。当時、私が見つけた最良の解決策は、目的の効果を得るためにping(冗談抜きで)を使用することでした。私はそれについてより良い書き込みを見つけました。 ここで で、呼び出し可能な "wait.bat" が記述されており、次のように実装されています。

@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul

そして、自分のバッチファイルに wait.bat の呼び出しを入れ、スリープする秒数を渡すことができます。

Windows 2003 Resource Kit は Unix ライクな sleep コマンドを提供するようです。 を提供するようです (ついに!)。一方、まだ Windows XP や Windows 2000、あるいは (悲しいことに) Windows NT を使っている人たちは、もっといい方法はないでしょうか?

私は sleep.py スクリプトを 受付回答 で、コマンドラインで引数が渡されない場合、デフォルトで1秒になるようにします。

import time, sys

time.sleep(float(sys.argv[1]) if len(sys.argv) > 1 else 1)

どのように解決するのですか?

最新情報

この timeout コマンドは、Windows Vista 以降で使用できるコマンドで、別の 回答 をご覧ください。 ここで続くのは 古い の回答です。

古い回答

Pythonがインストールされているか、インストールしても構わないのであれば(他の用途もあります)、以下のように作成するだけです。 sleep.py スクリプトを作成し、PATHのどこかに追加してください。

import time, sys

time.sleep(float(sys.argv[1]))

必要であれば、1.5秒、0.1秒などのサブ秒のポーズも可能です。として呼び出したい場合は sleep ではなく sleep.py を追加することです。 .PY という拡張子を PATHEXT 環境変数に追加します。Windows XPでは、編集することができます。

マイコンピュータ → プロパティ(メニュー) → 詳細設定(タブ) → 環境変数(ボタン) → システム変数(枠内)