バッチファイルで変数を使う方法

coffee-and-note-on-desktop プログラミング

バッチファイルでも変数を使うことができます。

この記事では、変数の使い方について解説します。

変数の宣言方法

変数は『set』コマンドを使います。

set 変数名=文字列

変数に代入された文字列を展開するときは、変数名を『%』で囲みます。

次のバッチファイルは、3行目で変数「name」に「Bob」を代入して、4行目で変数「name」に代入された文字列を表示させています。

@echo off

set name=Bob
echo %name%

pause
bat-set-basic

バッチファイルの作り方については、こちらの記事を参考にしてください。

同じ名前の変数がすでに存在する場合は、上書きされます。

@echo off

set name=Bob
echo %name%

set name=Alice
echo %name%

pause
bat-set-overwrite

一般的なプログラム言語と違い、バッチファイルでは、変数に文字列を代入するときに『”(ダブルクォーテーション)』で囲む必要はありません。

以下のバッチファイルを実行してみます。

@echo off

set name="Bob"
echo %name%

pause
bat-set-quotation

『”』も合わせて表示されています。

また、他のプログラミング言語だと「=」の前後のスペースは無視されますが、バッチファイルだとスペースも1文字として認識されます。

以下のバッチファイルを見てください。

変数名は「name」ではなく「name 」のように、スペース1文字分も合わせた名前になっています。

「name」は宣言されていないため、「ECHOは<OFF>です。」と表示されます。

また代入された文字列も「 Bob」のように初めにスペースが含まれた文字列になります。

@echo off

set name = Bob

rem これは別の変数として判定される
echo %name%

rem スペースも含んだ変数名になっている
echo %name %

pause

バッチファイルでは、「=」の前後にはスペースを入れないようにしましょう。

ユーザーの入力を受け取る

/p』を使えば、ユーザーに入力を求めて、その結果を変数に代入することができます。

set /p 変数名=入力を求めるメッセージ

次のバッチファイルを実行すれば「Enter your name:」と表示されます。

その後、「Bob」と入力して「Enter」を押下すれば「Hello Bob」と表示されます。

@echo off

set /p name=Enter your name:

echo Hello %name%

pause
bat-set-option-p

計算式の結果を代入する

/a』を使えば、計算式の結果を変数に代入することができます。

set /a 変数名=計算式

『/a』がないときは数式がそのまま表示されますが、『/a』を使うことで計算の結果が変数に代入されます。

@echo off

set formula=1+1
echo %formula%


set /a result=1+1
echo %result%

pause
bat-set-option-a

設定されている変数を確認する

『set』コマンドを実行すれば、設定されている変数を表示できます。

自分で設定した「a1」から「a6」以外の環境変数も表示されています

@echo off

set a1=test1
set a2=test2
set a3=test3
set a4=test4
set a5=test5
set a6=test6

set

pause
bat-set-display

値を指定すれば、その値で始まるすべての変数が表示されます。

@echo off

set a1=test1
set a2=test2
set a3=test3
set a4=test4
set a5=test5
set a6=test6

set a

pause
bat-set-display-only-a

特殊文字

以下の文字は、特殊な文字のためそのままでは変数に代入することができません

  • <
  • >
  • |
  • &
  • ^

次のバッチファイルでは3行目の「&」より後ろはコマンドとして認識されるため、「name」には「Bob」しか代入されていません。

@echo off

set name=Bob&Alice
echo %name%

pause
bat-set-special-char

これらの文字を変数に代入したいときは、次の方法を使います。

  • エスケープ文字『^』を使う
  • 引用符『”』で囲む

エスケープ文字『^』を使う

変数に代入したい特殊文字の前に『^』をつけます。

@echo off

set name=Bob^&Alice

set name

echo %name%

pause
bat-set-special-char-escape

5行目の『set』コマンドで「name」に「Bob&Alice」が格納されているのがわかります。

7行目の『echo %name%』で変数を表示してますが、「&」が文字列ではないため「Bob」しか表示されていません。

引用符『”』で囲む

対象の文字列を『”』で囲みます。

この場合は、引用符も文字列の一部として代入されることに注意が必要です。

@echo off

set name="Bob&Alice"

set name

echo %name%

pause
bat-set-special-char-quotation

まとめ

変数は、『set』コマンドを使います。

  • set 変数名=文字列
  • %変数名%:変数の展開
  • /p:ユーザーの入力を変数に代入
  • /a:計算式を変数に代入
  • set:設定されている変数の一覧表示
  • 特殊文字は『^』でエスケープするか『”』で囲む

バッチファイルを使えば、いろいろな作業を効率化することができます。

参考

Microsoftドキュメント set

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