Waitfor - DOS/コマンドプロンプト コマンド一覧
[Windows 7 以降](Windows Server 2003 以降) ネットワーク越しにシグナルの送受信を行います。バッチ処理の待機に使用することができます。
※ このページにおける「シグナル」とは、Waitfor プログラムで使用されるメッセージのようなものを指します。シグナルの形式は基本的には Waitfor でのみ使用されるものとなります。
構文
-- シグナル送信構文 waitfor[.exe] [/S <computer> [/U <user> [/P <password>]]] /SI <signal-name> -- シグナル受信構文 waitfor[.exe] [/T <seconds>] <signal-name>
オプション一覧
- /S <computer>
- シグナルの送信先となるコンピューターをコンピューター名またはIPアドレス(UNCパスで使用可能な名前)で指定します。
- このパラメーターを省略した場合は、シグナルは同じプライマリドメインのコンピューターにブロードキャストされます。
- ※ 「
.
」は指定できません。(<computer> は\\<computer>\IPC$
にアクセスできる名前である必要があります) - /U <user>
- コンピューターに接続する際のユーザー名を指定します。<user> には同じドメインのユーザー名を指定するか、ドメイン付きのユーザー名を「
<domain>\<user>
」の形式で指定します。 - /P <password>
- /U で指定したユーザーに対応するパスワードを指定します。
- /SI <signal-name>
- 送信するシグナルの名前を指定します。シグナル名の文字は半角アルファベット・半角数字と、ASCII文字のコード128から255に当たる文字のみが使用できます。(例としてハイフンやスラッシュは使用できません。)
- なお、シグナルは受信する相手がいるかどうかにかかわらず、(コンピューターに接続できれば)送信に成功します。
- /T <seconds>
- シグナルの受信を待機する待ち時間を指定します。<seconds> には待ち時間を秒数で指定します。
- このパラメーターを省略した場合は、シグナルが受信される(か Ctrl+C などが行われる)まで待機します。
- <signal-name>
- 受信(待機)するシグナルの名前を指定します。
- 「/SI」を指定せずにシグナル名(<signal-name>)を指定した場合はシグナル受信構文の扱いになります。
- なお、既に同じ名前のシグナルを待機している Waitfor がいる場合は、その名前を指定することはできません。
解説
Waitfor はプロセス・ネットワークを超えてシグナルを送受信する際に使用します。バッチファイル等で使用すると、「特定の処理が終わるまで待機する」「特定の処理が終わったことを通知する」といったやり取りを行うことができます。
内部的には、Waitfor は mailslot を使用してシグナルの送受信を行います。mailslot の名前は「\\<computer>\mailslot\WAITFOR.EXE\<signal-name>
」が使われ、送信時に <computer> を指定しなかった場合は「*
」が、シグナル受信の待機を行う際は「.
」が使用されます。
※ /S を省略した場合「\\*\mailslot\~
」の名前を使ってシグナル送信が行われます。シグナル送信時に「\\.\mailslot\~
」の名前は使用されないため、自分自身のコンピューターに送信する場合は必ず「/S」オプションで自分自身のコンピューター名または「127.0.0.1」を指定する必要があります。
例
サンプル1
waitfor HogeSignal
「HogeSignal」というシグナル名を使って待機します。タイムアウト時間が指定されていないため、シグナルを受信するかプログラムを強制終了(Ctrl+C)するまで待ち続けます。
サンプル2
waitfor /S 127.0.0.1 /SI HogeSignal
「HogeSignal」というシグナル名を使って自分自身のコンピューターにシグナルを送信します。別ウィンドウで Waitfor を使って「HogeSignal」を待機している処理があれば、その待機が終了して処理が進みます。