入門講義8:ユーザーに処理を選んでもらう

BASH,bat,バッチ

これまでの講義では、決まった処理を行うバッチファイルを作ってきました。入門講義8ではユーザーの指示で処理の変更を行います。ユーザーが任意の処理を選べるので、対話的になり、より便利になります。

コマンドは「if」を使用します。日本語訳だと「もし~ならば、□□だ」となります。この意味のとおり、「もしユーザーがこう指示したら、こう処理する。もし違う指示なら、この処理を行う」という分岐させて処理を行うことができます。

この記事が参考になる方

  • ユーザーに処理を選ばせて、処理結果を変えたいと思っている方
  • 条件分岐を行うコマンドを知りたい方
  • ifコマンドのやり方を知りたい方

条件分岐を行うIFコマンドの使い方

ifコマンドは条件分岐を行う機能があります。条件分岐とは、もし〜ならば、〇〇である。ということができます。ifを直訳すると、「もし〜ならば、◻︎◻︎である」。よくわからないと思うので、実際にやってみましょう。

例えば、「1と1が同じならば、良とする。」という構文を作ります。

if 1==1 echo 良

コマンドスクリプトの結果はこちらです。「良」という結果が得られました。

少しわかりづらいと思うので、下記フロー図を参考にしてください。コマンド文の「if 1==1」が条件で、「1と1が同じならば」と和訳できます。

条件の後に分岐していきますが、正しければ処理を行います。(赤矢印)正しくなければ、何も処理されません。

今回は1と1は同じなので、赤矢印の処理となります。

次に条件が正しくない、誤りの場合の処理についてみていきます。

if 1==2 echo 良

今回のコードは和訳すると「もし、1と2が同じければ、良と表示する。」という意味になります。もちろん、同じでないので、コマンドスクリプトの結果はこちら。

何も表示されません。後述しますが、条件が正しくないときの処理内容がこのコードに何も記述されていません。このため、コマンドスクリプトの処理が空白となります。

条件が誤りの時の処理を追加

先程のコマンドは条件の誤り後の処理の内容がないため、処理内容が何も表示されませんでした。条件が誤り、等しくないときにも、処理をさせる方法は、elseを追加します。

if 1==2 (echo 良し)else (echo 間違い)

コマンドスクリプトの結果はこちら。条件分岐で誤りの内容なので、elseの後の結果になります。

コードのif 1==2 (echo 良し)else (echo 間違い)を和訳すると、「もし、1と2が同じならば、良しと表示する。そうでなければ間違いと表示する」となります。図示すると、下記のようなイメージになります。

条件分岐を複数作る

条件分岐を複数作る時はif 条件 正の場合の処理の後にelse ifをつけます。

例えば、映画館で曜日別に割引があるとします。曜日別のやり引きの内容を表示させます。

例題1

もし、今日が水曜日ならシールバースデーです。それとも、もし、木曜日なら、女性割引デーです。それ以外は割引がありません。

この例題1を箇条書きにして表します。

・水曜日 ▶︎シルバーズデー

・木曜日 ▶︎女性割引デー

・それ以外▶︎割引なし

set 今日=水曜日
if %今日%==水曜日 (echo シールバースデー) else if %今日%==木曜日 (echo 女性デー) else (echo 割引はありません)
set 今日=木曜日
if %今日%==水曜日 (echo シールバースデー) else if %今日%==木曜日 (echo 女性デー) else (echo 割引はありません)
set 今日=金曜日
if %今日%==水曜日 (echo シールバースデー) else if %今日%==木曜日 (echo 女性デー) else (echo 割引はありません)

このコードをコマンドスクリプトで表示させます。

結果を見ると、わかりますが、set関数で定義した曜日によって、割引の内容が表示されています。下記の図を見ると視覚的にわかります。

このようにelse ifを複数使用すると、条件分岐を複数作ることが可能になります。

ユーザーに処理を選んでもらう

それでは、いよいよユーザーに処理を選んでもらうコードを作成します。

ユーザーに処理を選んでもらうには、「set /p 変数名=」を使用します。

前節のシルバーデイのコードを利用して、ユーザー処理について例を出して解説します。

@echo off
set /p 今日=
if %今日%==水曜日 (echo シールバースデー
) else if %今日%==木曜日 (echo 女性デー
) else (echo 割引はありません)
pause

このコードのポイントは2行目の「set /p 今日=」です。このコードはユーザーに変数「今日」に曜日を入れてもらいます。そして、3~5行目のifコマンドによって、処理内容を分岐させ処理結果を分けて表示します。

これをバッチファイルにします。

クリックすると、上記の④のようにコマンドプロンプトの画面が出ます。

このコマンドプロンプトに「水曜日」と記入して、Enterボタンを押すと「シルバーズデイ」と表示されます。「木曜日」にすると、「女性デー」。それ以外は「割引がありません」と表示されます。

上記の画像のようにユーザーの処理によって内容が変わります。

おまけ:ユーザーに記入しやすい環境を作る

入力機能を持たせても、ユーザーが何を入力したらいいか分からないケースがあります。この際は、echoコマンドを使い入力補助の言葉を表示させ、ユーザーに掲示します。

また、コマンドプロンプトは画面が暗く、人によっては見にくい場合があります。この場合、colorコマンドを使用して画面の色を変えることができます。

前節のコードを使用し、ユーザーに記入しやすくしたコードに書き換えました。

@echo off
color f0
echo 今日の曜日を記入してください。
echo 例「月曜日」
set /p 今日=
if %今日%==水曜日 (echo シールバースデー
) else if %今日%==木曜日 (echo 女性デー
) else (echo 割引はありません)
pause

今回のコードで付け足したの2,3行目。

colorコマンドによって、コマンドプロンプトの表示の色を変え、echoコマンドによって、記入要領を表示させます。

バッチファイルをクリックすると、下記のとおり記入要領が表示され、画面の色がかわりました。

colorコマンドは多様な色に変えることが可能です。詳しく知りたい方はこちらの記事を参照してください。

まとめ

今回はユーザーに処理内容を選ばせるコードを解説しました。このコードを作るには下記の2点を理解すれば、作ることが可能です。

入門講義8のまとめ

・ifコマンドによって条件分岐を行う。

・「set /p 変数名=」によって、ユーザーに変数の内容を入力してもらう。

このユーザーに入力してもらい、条件分岐を使うことでより便利にバッチファイルを使用することが可能になります。

コメント

タイトルとURLをコピーしました