【コマンドプロンプト講座】指定したキーの入力を受け付ける

指定したキーの入力を受け付ける

コマンドプロンプト講座です。

前回はファイル名を一括で変更する方法について紹介しました。

【コマンドプロンプト講座】ファイル名を一括で変更する

2019.12.19

今回は指定したキーの入力を受け付けるコマンドについて。

それでは見ていきましょう。



指定したキーの入力を受け付けるには

コマンドプロンプトで指定したキーの入力を受け付けるには、choiceコマンドを使います。

choice

オプションも指定せずに実行すると、下記のような画面が表示されます。

choice

Y もしくは N を入力すると、プログラムが先に進みます。

それ以外の入力は受け付けずに先へ進みません。

入力したキーによって、errorlevel という変数に値が代入されます。

Y を入力すると 1 が代入され、N を入力すると 2 が代入されます。

試しにバッチファイルをつくってみます。

@echo off

choice

echo errorlevel=%errorlevel%

pause

Y を入力したときの実行結果です。

choice

続いて、N を入力したときの実行結果です。

choice

入力キーを指定する

入力キーを指定するには、/cオプションを使います。

例えば、以下のようなコマンドの場合。

choice /c:abc

下記のような候補が表示されます。

[A,B,C]?

勘の鋭い方ならもうわかるかと思いますが、A を選ぶと 1、B を選ぶと 2、C を選ぶと 3 が errorlevel に代入されます。

入力キーの候補を非表示にする

入力キーの候補を非表示にするには、/nオプションを使います。

choice /n

これで候補が非表示になります。

メッセージを表示させる

自作のメッセージを表示させるには、/mオプションを使います。

choice /m "自作メッセージ"

例えば、以下のようなコマンドを実行してみます。

choice /n /m "Y もしくは N を入力してください。"

結果は以下の通りです。

choice

入力時間に制限を与える

入力時間に制限を与えるには、/tオプションを使います。

choice /t 時間 /d 文字

時間はタイムリミット(秒)を指定します。

文字はタイムリミットを過ぎたときに強制的に入力する文字を指定します。

例えば、以下のような場合。

choice /t 10 /d y

10秒経過すると強制的に Y が入力されます。

バッチファイルでクイズを作れます

この choiceコマンドを使えば、バッチファイルでクイズを作ることができます。

@echo off

echo 初代ポケットモンスターが発売されたのはいつ?
echo 1.1996年2月27日
echo 2.1998年9月12日
echo 3.1999年11月21日
choice /c:123 /t 30 /d 2 /n /m "解答:"
if %errorlevel% equ 1 goto correct
echo 不正解!
pause
exit

:correct
echo 正解!
pause

制限時間30秒のクイズで正解は 1 です。

制限時間を過ぎると強制的に 2 が入力されます。

最後に

いかがでしょうか。

非常に古典的ではありますが、頑張れば、ちょっとしたノベルゲームも制作できそうです(なかなかの苦行ではありますが)。

そういえば、昔、ゲームブックみたいなものがあって、小説風になっていて、選択肢によって何ページを開けるみたいなものがありました。

goto とラベルは多用すると非常に見づらいソースコードになるので、そこは注意が必要です。

こうやって書いていると最近のプログラミング言語のありがたみがわかるかと思います。