今回はif文を用いて4択クイズを作成しましたので、ご紹介いたします。
早速ですが、コマンドを少しずつ解説していきます。
@echo off
echo 問題です。バッチファイルの拡張子は?
echo.
echo 1 .bat
echo 2 .txt
echo 3 .ppt
echo 4 .gif
問題文(問題です。バッチ~)が一番上になるよう、echo で出力させます。
問題文後の「echo.」ですが、空白の行を表示させます。
つまり、問題文と次に紹介する選択肢の間に改行を入れます。
echo 1 .bat から
echo 4 .gif ですが、選択肢を4つ表示させます。
次にこの一文について説明していきます。
choice /c 1234 /t 5 /d 2 /n /m "答えを入力してください"
choice /c 1234 /t 10 /d 2 /m "答えを入力してください"
・choiceコマンドは「指定したキーの入力を受け付ける」コマンドとなっています。
・「/c」で入力できるキーを指定します。入力を受け付けるのは1文字までなので
「/c 1234」では「1,2,3,4」が選択肢となります。
・「/t」で時間切れとなるまでの秒数を指定します。今回は5秒に設定しています。
・「/d」は時間切れになった場合、どのキーを入力するか指定します。「/d 2」では、5秒後に自動で「2」が入力されるよう
設定します。注意点は、「/t」を入力した際は「/d」が必ずセットになるようにしてください。
以上のように入力すると
となります。
「答えを入力してください」の後に[1,2,3,4,]? という入力キーが表示されますが
「/n」オプションを入力し
choice /c 1234 /t 5 /d 2 /n /m "答えを入力してください"
とすると
と[1,2,3,4]?の入力キーの選択肢が非表示となりました。
今度は実際にif文を使って「正解」「不正解」の
それぞれの場合、どのような処理を行うか決めていきます。
if %errorlevel% == 1 goto ok
cls
echo 不正解です。正解は1番の .bat です。
pause >nul
:ok
cls
echo 正解です。おめでとうございます。
pause >nul
if %errorlevel% == 1 goto okについて
選択肢の結果は%errorlevel%というところに入ります。
choiceコマンドでは、errorlevelにその選択肢の順番が代入されます。例えば選択肢1だと1
選択肢2だと2といった感じです。仮に選択肢が「a,b,c,d」の4つの場合、aなら1、bなら2が返ってきます。
「goto」コマンドは簡単に説明すると「:から始まる同名の行に飛ぶ」というものです
よって、if %errorlevel% == 1 goto ok は
「選択肢が1だった場合に、:から始まるokの行に飛ぶ」ということになります。
次に、「正解」「不正解」時の振り分けについて説明します。
動き「以外」の処理を先に入力します。
なぜかというと、上から処理を実行するバッチの場合、「:から始まるokの行」の処理を
先に入力すると、選択肢が「2,3,4」の場合でも「:から始まるokの行」の処理を実行してしまうため、
「選択肢が1」の場合の処理を後に行います。
clsコマンドは「画面をクリア(空)にする」コマンドです。
この位置で入れることによって、問題文を消し、選択肢を選んだ結果(正解or不正解)のみを
表示させます。
実際に正解と不正解を選択した場合について確認していきます。
正解選択時のパターン
不正解or時間切れ(自動的に2が選択される)パターン
正解・不正解でそれぞれ異なるメッセージが確認できました。
選択肢を増やすと4択より多く選択肢を増やすことができます。(ただし1桁に収まるまで)
今回はif文を使ったクイズを作成しました。
ご覧いただき、ありがとうございました。
■参考元