【bat】バッチでset /pを使用し、ユーザーが入力したものを使用する

PC

スクリプトでinputなど、対話的に入力した値を使用して運用行う事は沢山あります。

ワンコ

batファイルでユーザーが指定したものを使用したいです

このような要望に応えます。

ユーザーが入力したものを、変数に入れて使用すると、業務効率化の幅が広がります。入力された値によって結果が変わってくるってワクワクしますね。

実例を踏まえて詳しく説明するので、記事を読んだ後はきっとレベルの高いbatファイルを作成出来るようになっていますよ!

batファイルでもset /pを使用すれば、ユーザーが入力した値を使用して処理が可能なのでやってみましょう。

コマンドとしては「set /p」です。

プログラミングにオススメのマウス

プログラミングにオススメのキーボード

目次

batでset /pを使用し、入力したものを使用する

PC

setといえば変数を指定するものですが、オプションで「/p」を使用する事で、「input」のような入力する値を、変数に格納する事が出来ます

そして「%変数%」のように、変数を「%」で囲うことで使用できます。

では実際に行っていきます。

batでset /pを実際に使用してみる

batファイル作成

まずはbatファイルを作成してください。ここでは「star.bat」というファイルを作成しました。

batのコマンドでファイルを作成する事も可能です。

このファイルを右クリックして、「編集」をクリックして編集します。

ここでは下記のようなスクリプトを書きました。

set /p star="評価をしてください[1-5]"

echo あなたの評価は%star%でした。

pause

上書き保存します。

ここで出てくるechoやpauseのコマンドについては以下の記事を参照してください

batファイルを実行する

では早速batを実行して見ます。

setの行でユーザーの入力を待つ画面が出てきました。

バッチファイルでset /pのようなsetを使用した、テクニカルなbatを作成したい方は下の記事にまとめているのでどうぞ

文字化けのエラーが発生した場合

ここで文字化けした方も、いるのではないでしょうか?

文字化けした方はbatファイルを「名前を付けて保存」して、文字コードを「ANSI」にしましょう。

そのまま上書き保存をし、もう一度batファイルをダブルクリックします。

詳細は以下の記事でまとめていますので、わかりにくい方はどうぞ

batファイル実行の続き

ここでは4を入力し、エンターします。

変数に入力した「4」が格納されて、表示されているのがわかります。

setコマンドやechoコマンドまで表示されていますね。ここも不要なので消しましょう。

batファイル実行して不要な部分を消す

batファイルを編集して下記のように「@echo off」を最初の行に入れましょう。

@echo off

set /p star="評価をしてください[1-5]"

echo あなたの評価は%star%でした。

pause

ファイルを保存して、もう一度batファイルをダブルクリックする。起動したら4を入力して、エンターして見ましょう。

不要なスクリプト部分が消えて、想定通りの動きになりました。

batでset /pを使用した応用編

では少し難しいですが、実務用の応用編をやってみます。

先程のbatファイルでは1から5以外の値を入力した場合も表示されてしまいます。また何も指定しなかった場合も表示されてしまいます。

学習で「set /p」の動きを知るだけなら良いですが、実務で使用するにはそこまで作りこむ必要があります。

先程のbatファイルを修正して、実務レベルにしてみました!

@echo off

REM 1-5以外を指定した場合はここに戻る
:again
set /p star="評価をしてください[1-5]"

REM 条件分岐
if %star% equ 1 (
 goto :message
) else if %star% equ 2 (
 goto :message
) else if %star% equ 3 (
 goto :message
) else if %star% equ 4 (
 goto :message
) else if %star% equ 5 (
 goto :message
) else (
 goto :again
)

REM 1-5を指定した場合はここに移動
:message
echo あなたの評価は%star%でした
pause

「REM」はその行はコメントアウトして、処理とは関係ない事を示すコマンドです。処理の説明を書く時に使用します。

「:」でもコメントアウトできますが、4行目や23行目はコメントアウトになりません。その理由は以下の記事で書いていますが、ここでは省略します。

「:again」は任意の名前でラベルを指定しています。1から5以外であればここに戻ってくる目印になります。

戻るには「goto」コマンドを使用し、ラベルを指定します。

if文を用いて条件分岐しています。1から5を指定した場合は「goto」で「:message」ラベルまで移動してメッセージを表示する設計です。

1から5以外を指定した場合は「:again」のラベルまで戻る仕組みです。

これで1から5以外を指定した場合は、再度数字の入力を求められるようになります。

batでset /pを使用し、入力したものを使用する!まとめ

PC

変数を指定する「set」コマンドに「/p」のオプションを付ける事で、入力した値を使用可能です。

文字化けする場合もありますが、その対処法として「文字コードの変更」がありました。

そのままだと、batファイルの中身も表示してしまうので、最初の行に「@echo off」を追記する事で、綺麗にしました。

最終的なコードは下記になりました。

@echo off

set /p star="評価をしてください[1-5]"

echo あなたの評価は%star%でした。

pause

batファイルで、入力する値を使用すると、運用の幅が広がりますので、是非やってみて下さい。

もっと高度なプログラミングで、業務効率化する場合はプログラミングスクールもお勧めです。

おすすめするプログラミングスクール

batで入力した値を使用できるようになれば、簡単なbatで幅広い事が出来るようになるので是非覚えて見て下さい。

PC

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次