導入
これまでは値をバッチの中に直接書いていました。set /p を使うと、実行中にユーザーへ質問して答えを受け取る ことができます。バッチが「対話型」になります。
説明
set /p 変数=メッセージ と書くと、メッセージを表示してカーソルが点滅し、ユーザーが入力して Enter を押すと、その内容が変数に入ります。
@echo off
set /p username=お名前を入力してください:
set /p age=年齢を入力してください:
echo.
echo %username% さん(%age% 歳)、ようこそ!
数値として使いたい入力は、set /p で受け取ってから set /a に渡します。
@echo off
set /p n=数字を入力:
set /a doubled=n*2
echo 2倍すると %doubled% です
Enter だけ押して何も入力しなかった場合、変数は 前の値のまま(初めてなら空)になります。空のときの動きが気になる場面では、あらかじめ set var= で空にしておくか、後述の if で中身をチェックします。
入力はいつも「文字」
set /pで受け取った値は、たとえ数字を打っても「文字」として入ります。計算に使うときはset /aを通す、という一手間を忘れないようにしましょう。
やってみよう
名前と好きな数を尋ね、その数を3倍して返すバッチを書いてみましょう。set /p で受け取り、set /a で計算するのがポイントです。