2014年7月6日日曜日

[Windows] コマンドスクリプトからユーザ入力を求める

コマンドスクリプトの途中でユーザ入力を必要とする場合は、以下の方法があります。

1.選択肢から選ぶ

1文字だけを入力させる場合には、CHOICEコマンドが使えます。指定した入力以外は受け付けません。入力結果は、ERRORLEVEL 環境変数で確認できます。

<サンプル>
これは Yes/No/Cancel を入力させる場合の例です。
choice /C YNC /M "Yes/No/Cancel を選択してください"
If ERRORLEVEL 3 (
 echo Input Cancel
) ELSE If ERRORLEVEL 2 (
 echo Input No
) ELSE If ERRORLEVEL 1 (
 echo Input Yes
)
<実行結果>
Yes/No/Cancel を選択してください [Y,N,C]? Y
Input Yes

2.テキストの入力を求める

柔軟に入力を求める場合は、SET /P コマンドが使えます。

<サンプル>
set /P USER_INPUT="入力してください: "
入力してください: hello
echo %USER_INPUT%
hello

3.入力するまで待つ

ユーザ入力を待つ場合は、PAUSEコマンドが使えます。何の入力でも良いので、ユーザ入力があるまで待ちます。

<サンプル>
pause
続行するには何かキーを押してください . . .

4.スリープする

一時的にsleepするならばTIMEOUTコマンドが使えます。何も入力しないとタイムアウトするまで待ちますが、ユーザ入力があると処理を続行します。

<サンプル>
timeout /t 5
5 秒待っています。続行するには何かキーを押してください ...