変数の作成

にメンテナンス済み

バッチファイルを使用している際、同じ文字列を何度も使用することはありませんか?

例えば、特定のファイルをコピーした後、コピー済みフォルダに移動させる場合、以下のように同じパスを何度も書くことになります。

同じ文字列を何度も書いている例
copy C:\Users\user\Documents\sample.txt C:\Users\user\Documents\copy\sample.txt

move C:\Users\user\Documents\sample.txt C:\Users\user\Documents\copied\sample.txt

コピーする際と移動する際、C:\Users\user\Documents\sample.txtを 2 回書いています。

これでも問題はありませんが、同じ文字列を何度も書くと、打ち間違いの原因になったり、修正が面倒になったりします。

こういった問題を解決するために、バッチファイルでは変数を定義することができます。

変数を定義することで、同じ文字列を何度も書く必要がなくなり、打ち間違いの原因を減らすことができます。

前述した例を変数を使って書き換えると、以下のようになります。

変数を使った例
set source=C:\Users\user\Documents\sample.txt

copy %source% C:\Users\user\Documents\copy\sample.txt

move %source% C:\Users\user\Documents\copied\sample.txt

2度記述していたC:\Users\user\Documents\sample.txtを、変数sourceに代入しています。

こうすることで、%source%と書くだけで、C:\Users\user\Documents\sample.txtと同じ意味になります。

このページでは、バッチファイルで変数を定義する方法と、変数を使った具体例を紹介します。

変数を定義する方法

変数を定義するには、setコマンドを使用します。

setコマンドの基本構文
set 変数名=

setコマンドの後に、変数名と値を指定します。

イコールの前後にはスペースを入れてはいけません。

set コマンドのオプション

setコマンドには前述した変数を予め定義しておける他、オプションの指定によっては、バッチファイルを実行した際にユーザーからの入力を受け付けることもできます。

/P オプション

/Pオプションを指定すると、ユーザーからの入力を受け付けることができます。

pオプションでユーザーからの入力を受け付ける
set /P 変数名=表示メッセージ

上記のコマンドは「変数名」という変数に「表示メッセージ」という文字列を代入する、という意味ではありません。

/Pオプションを指定すると、setコマンドはユーザーからの入力を受け付けるようになります。

変数に格納する値を受け付ける際に画面上に表示されるメッセージが「表示メッセージ」にあたる部分です。

実際に上記のバッチファイルを実行した場合は以下のように表示されます。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>bat-file.cmd
表示メッセージ:

ユーザーからの入力を受け付けるまでは待機状態となり、setコマンド以降の処理は実行されません。

ユーザーが値を入力し、Enter キーを押すと、入力された値が変数に代入され、setコマンド以降の処理が実行されます。

変数を使った具体例

文字列の結合

変数と文字列

変数と特定の文字列を結合するには演算子は必要なく、%変数名%文字列と書きます。

set source=C:\Users\user\Documents\sample

echo %source%.txt

変数と変数

変数と変数の場合も同様で、%変数名%%変数名%と書きます。

set source=C:\Users\user\Documents\sample

set extension=.txt

echo %source%%extension%

数式の計算

set /Aコマンドを使用し、変数に繰り返し結果を格納することで、数式の計算を行うことができます。

@echo off
setlocal

set x=0

for /L %%i in (1, 1, 10) do (
  set /A x=x+%%i
)

echo %x%

endlocal

上記のバッチファイルを実行すると、以下のように表示されます。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
bat-file.cmd
55

環境変数を利用する

バッチファイルでは、自分で定義した変数の他に、予め定義された環境変数を利用することもできます。

環境変数は、Windows が提供する変数で、Windows に関する情報を格納しています。

環境変数の一覧

環境変数説明
%CD%現在のディレクトリのパス
%DATE%現在の日付
%TIME%現在の時刻
%RANDOM%0 から 32767 の乱数
%ERRORLEVEL%直前に実行したコマンドの終了コード
%USERNAME%現在のユーザー名
%COMPUTERNAME%コンピューター名
%OS%OS の種類
%PROCESSOR_ARCHITECTURE%プロセッサーの種類
%NUMBER_OF_PROCESSORS%プロセッサーの数
%SYSTEMROOT%システムフォルダのパス
%TEMP%一時フォルダのパス
%PATHEXT%実行可能な拡張子の一覧
%PATH%実行可能なファイルのパス
%HOMEDRIVE%ホームフォルダのドライブ(通常は「C:」)
%HOMEPATH%ホームフォルダのパス
%USERPROFILE%ユーザーフォルダのパス
%APPDATA%アプリケーションデータのパス
%PROGRAMFILES%プログラムファイルのパス
%COMMONPROGRAMFILES%共通のプログラムファイルのパス
%COMMONPROGRAMFILES(x86)%共通の 32 ビットプログラムファイルのパス
%PUBLIC%共有フォルダのパス
%ALLUSERSPROFILE%共有のユーザーフォルダのパス

%userprofile%などはよく使うため、覚えておくと便利です。

環境変数を利用した具体例

ユーザーのホームフォルダにファイルを作成する

@echo off
setlocal

cd %userprofile%
dir

endlocal

練習問題

練習問題

変数としてユーザーからの入力を受け付けるには、どのようなオプションを指定する必要があるでしょうか?

回答がサーバーに送信されることはありません
#PowerShell #コマンドプロンプト #バッチファイル