Windowsバッチコマンド「set /p」の使い方を徹底解説!

Windowsのバッチファイルは、自動化やシンプルなスクリプト処理に便利なツールですが、ユーザーからの入力を受け取る方法を知っていますか? 「set /p」コマンドを活用すれば、バッチファイル内でユーザーからの入力を取得し、動的な処理を実行することができます。 この記事では、「set /p」コマンドの基本から応用例まで、実際のコードを交えて詳しく解説します。

「set /p」コマンドとは?

「set /p」は、Windowsのバッチファイルでユーザーからの入力を受け取るためのコマンドです。 通常の「set」コマンドは変数に値を設定するだけですが、「/p」オプションを付けることで、ユーザーに入力を求めることができます。

基本構文:

set /p 変数名=メッセージ

この構文を使うことで、ユーザーが入力した値を変数に格納できます。

「set /p」の基本的な使い方

まずは、「set /p」のシンプルな使用例を見てみましょう。

例1:ユーザーの名前を取得する

@echo off
set /p name=あなたの名前を入力してください:
echo こんにちは、%name% さん!
pause

解説:

  1. set /p name= で、ユーザーに「あなたの名前を入力してください: 」と表示。
  2. ユーザーが入力した名前が name 変数に格納される。
  3. echo コマンドで、入力された名前を表示する。

「set /p」を使った条件分岐

バッチファイルでは、ユーザーの入力によって処理を変えることが可能です。

例2:簡単なYes/Noの選択肢を作る

@echo off
set /p answer=続行しますか?(y/n):
if /i "%answer%"=="y" echo 続行します。
if /i "%answer%"=="n" echo 終了します。
pause

ポイント:

  • if /i は大文字小文字を区別せずに比較するオプション。
  • ユーザーが y を入力すると「続行します。」と表示。
  • n を入力すると「終了します。」と表示。

ループ処理で「set /p」を活用

「set /p」はループと組み合わせることで、ユーザーが特定の入力をするまで繰り返し処理を実行できます。

例3:適切な入力を受け取るまで繰り返す

@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

ポイント:

  • ユーザーが 123 のいずれかを入力するまでループを続ける。
  • 正しい入力をするとループを抜けて pause で終了。
  • 無効な入力があると再度入力を求める。

「set /p」で数値計算を行う

バッチファイルでは、ユーザーが入力した数値を用いて計算をすることも可能です。

例4:足し算を行う

@echo off
set /p num1=1つ目の数値を入力してください:
set /p num2=2つ目の数値を入力してください:
set /a result=%num1% + %num2%
echo 結果: %result%
pause

解説:

  • set /a は算術演算を行うためのコマンド。
  • ユーザーが入力した数値を足し算し、結果を表示する。

「set /p」の注意点と制約

「set /p」は便利ですが、使用時に気をつけるべきポイントもあります。

1. 空白を含む入力の扱い

ユーザーが空白を含む値を入力すると、値の前後に不要なスペースが入ることがあります。 回避するために、ダブルクォートを活用しましょう。

set /p text=入力してください:
echo "%text%"

2. 入力なしの場合の対処

ユーザーが何も入力せずにEnterを押すと、変数は空になります。 この場合、デフォルト値を設定する方法もあります。

@echo off
set /p input=値を入力してください (デフォルト: 100):
if "%input%"=="" set input=100
echo 選択された値は %input% です。
pause

3. 特殊文字の扱い

入力に &| などの特殊文字を含むと、意図しない動作をする可能性があります。 特殊文字をエスケープするには ^ を使いましょう。

set /p cmd=コマンドを入力してください:
echo 実行するコマンド: ^%cmd%

まとめ

「set /p」コマンドを使うことで、ユーザーの入力を取得し、対話的なバッチスクリプトを作成できます。

  • 基本構文を理解する。
  • 条件分岐やループと組み合わせて応用する。
  • 数値計算やデフォルト値の設定も可能。
  • 入力値の処理に注意して、エラーを防ぐ。

バッチファイルを活用する際には、ぜひ「set /p」をマスターしてみてください!

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