MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


バッチファイルで4択クイズを作成してみた
profile-img
投稿者: thirumaさん
投稿日:2019/07/03 14:04
更新日:
like-img
分類
技術
テクノロジー
Windows系サーバ
キャリア
テクニカルサポート / 構築 / 設計
投稿内容

今回は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の行に飛ぶ」ということになります。


次に、「正解」「不正解」時の振り分けについて説明します。


cls
echo 不正解です。正解は1番の .bat です。
pause >nul

:ok
cls
echo 正解です。おめでとうございます。
pause >nul

上記で決めた、「選択肢が1だった場合に、:から始まるokの行に飛ぶ」という

動き「以外」の処理を先に入力します。

なぜかというと、上から処理を実行するバッチの場合、「:から始まるokの行」の処理を

先に入力すると、選択肢が「2,3,4」の場合でも「:から始まるokの行」の処理を実行してしまうため、

「選択肢が1」の場合の処理を後に行います。


clsコマンドは「画面をクリア(空)にする」コマンドです。

この位置で入れることによって、問題文を消し、選択肢を選んだ結果(正解or不正解)のみを

表示させます。


実際に正解と不正解を選択した場合について確認していきます。

正解選択時のパターン


不正解or時間切れ(自動的に2が選択される)パターン


正解・不正解でそれぞれ異なるメッセージが確認できました。

選択肢を増やすと4択より多く選択肢を増やすことができます。(ただし1桁に収まるまで)

今回はif文を使ったクイズを作成しました。

ご覧いただき、ありがとうございました。


■参考元

https://jj-blues.com/cms/command-choice/

https://qiita.com/sawa_tsuka/items/4432263ef34418175fa9

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3