Windowsのバッチファイルは、自動化やシンプルなスクリプト処理に便利なツールですが、ユーザーからの入力を受け取る方法を知っていますか? 「set /p」コマンドを活用すれば、バッチファイル内でユーザーからの入力を取得し、動的な処理を実行することができます。 この記事では、「set /p」コマンドの基本から応用例まで、実際のコードを交えて詳しく解説します。
「set /p」は、Windowsのバッチファイルでユーザーからの入力を受け取るためのコマンドです。 通常の「set」コマンドは変数に値を設定するだけですが、「/p」オプションを付けることで、ユーザーに入力を求めることができます。
基本構文:
set /p 変数名=メッセージ
この構文を使うことで、ユーザーが入力した値を変数に格納できます。
まずは、「set /p」のシンプルな使用例を見てみましょう。
@echo off
set /p name=あなたの名前を入力してください:
echo こんにちは、%name% さん!
pause
解説:
set /p name=
で、ユーザーに「あなたの名前を入力してください: 」と表示。name
変数に格納される。echo
コマンドで、入力された名前を表示する。バッチファイルでは、ユーザーの入力によって処理を変えることが可能です。
@echo off
set /p answer=続行しますか?(y/n):
if /i "%answer%"=="y" echo 続行します。
if /i "%answer%"=="n" echo 終了します。
pause
ポイント:
if /i
は大文字小文字を区別せずに比較するオプション。y
を入力すると「続行します。」と表示。n
を入力すると「終了します。」と表示。「set /p」はループと組み合わせることで、ユーザーが特定の入力をするまで繰り返し処理を実行できます。
@echo off
:loop
set /p choice=1~3の番号を入力してください:
if "%choice%"=="1" echo あなたは1を選びました。
if "%choice%"=="2" echo あなたは2を選びました。
if "%choice%"=="3" echo あなたは3を選びました。
if "%choice%"=="1" goto end
if "%choice%"=="2" goto end
if "%choice%"=="3" goto end
echo 無効な入力です。もう一度入力してください。
goto loop
:end
pause
ポイント:
1
、2
、3
のいずれかを入力するまでループを続ける。pause
で終了。バッチファイルでは、ユーザーが入力した数値を用いて計算をすることも可能です。
@echo off
set /p num1=1つ目の数値を入力してください:
set /p num2=2つ目の数値を入力してください:
set /a result=%num1% + %num2%
echo 結果: %result%
pause
解説:
set /a
は算術演算を行うためのコマンド。「set /p」は便利ですが、使用時に気をつけるべきポイントもあります。
ユーザーが空白を含む値を入力すると、値の前後に不要なスペースが入ることがあります。 回避するために、ダブルクォートを活用しましょう。
set /p text=入力してください:
echo "%text%"
ユーザーが何も入力せずにEnterを押すと、変数は空になります。 この場合、デフォルト値を設定する方法もあります。
@echo off
set /p input=値を入力してください (デフォルト: 100):
if "%input%"=="" set input=100
echo 選択された値は %input% です。
pause
入力に &
や |
などの特殊文字を含むと、意図しない動作をする可能性があります。 特殊文字をエスケープするには ^
を使いましょう。
set /p cmd=コマンドを入力してください:
echo 実行するコマンド: ^%cmd%
「set /p」コマンドを使うことで、ユーザーの入力を取得し、対話的なバッチスクリプトを作成できます。
バッチファイルを活用する際には、ぜひ「set /p」をマスターしてみてください!