バッチファイルを使用するとWindowsで色んな事が楽に出来ます。更にバッチファイルで引数も取得して扱えたら便利になると思いませんか?
そこで今回はバッチファイルで引数を扱う方法をやっていきます。
現役エンジニアの筆者が実例batを用いて詳しく説明します!
windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。
バッチファイルで引数を扱う方法は「%」を使用する事です。
bat(バッチ)で引数を取得する方法

batファイルで引数を扱う方法は%を使用する事です。
%0:実行しているファイル名
%1:引数1つ目
%2:引数2つ目
~
%n:引数nつ目
%0で実行しているファイル名を取得できます。

%nでnつ目の引数を取得する事が可能です。
実際に引数を取得してみる
実際にバッチファイルを実行してみます。

@echo off
echo %0
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
echo %10
echo %11
echo %12
echo %13
echo %14
pause
バッチファイル実行結果です。
C:\script\bat_引数>引数_default.bat 1 2 3 4 5 6 7 8 9 10 11 12 13 14
引数_default.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
%0で実行しているバッチファイル名を取得できています。
@echo off
echo %0
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
echo %10
echo %11
echo %12
echo %13
echo %14
pause
%nでnつ目の引数を取得できています。
引数を取得する時に注意する事

ローマ字にしてみると9番目までしか取得出来ていません。
%10以降は%1の引数に後の数字が結合したものが表示されるからです。
C:\script\bat_引数>引数_default.bat a b c b e f g h i j k l m n
引数_default.bat
a
b
c
b
e
f
g
h
i
a0
a1
a2
a3
a4
続行するには何かキーを押してください . . .
そんな場合は「shift」を使用します。
@echo off
echo %0
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
shift
echo %9
shift
echo %9
shift
echo %9
shift
echo %9
shift
echo %9
pause
このバッチファイルを実行します。
C:\script\bat_引数>引数_default.bat a b c b e f g h i j k l m n
引数_default.bat
a
b
c
b
e
f
g
h
i
j
k
l
m
n
続行するには何かキーを押してください . . .
きちんと表示されました。
空白が入った引数を1つとして扱う方法

空白が入った引数を1つの引数として扱いたい場合はどうでしょうか?
C:\script\bat_引数>引数_default.bat スペース を入れる test
スペース
を入れる
test
空白が引数の区切りとなっているので、引数1と引数2に分かれてしまいます。
空白が入った引数を1つの引数として扱いたい場合は「”」で囲いましょう!
C:\script\bat_引数>引数_default.bat "スペース を入れる" test test
"スペース を入れる"
test
test
想定通り空白があっても1つの引数として扱われています。
しかし”まで表示されています。”なしにする事はどうでしょうか?
引数取得する時に「”」を削除する簡単な方法
「“」を削除する方法は「%~1」を使用します。
@echo off
echo %0
echo %~1
echo %2
echo %3
pause
バッチファイルを上のようにして実行します。
C:\script\bat_引数>引数_default.bat "スペース を入れる" test test
引数_default.bat
スペース を入れる
test
test
「”」が表示しなくなりました!
引数全部を表示する簡単な方法
引数を全て表示したい場合はどうでしょうか?
「%*」を使用する事で可能です。
@echo off
echo %0
echo %~1
echo %2
echo %3
echo %*
pause
実行してみます。
C:\script\bat_引数>引数_default.bat "スペース を入れる" test test
引数_default.bat
スペース を入れる
test
test
"スペース を入れる" test test
すべての引数が表示されています。
しかし全てで一つの引数になっています。ひとつずつ表示するにはforで繰り返しなどするしかありません。

@echo off
set array=%*
for %%i in (%array%) do (
echo %%i
)
pause
このバッチファイルを実行してみます。
C:\script\bat_引数>引数_default.bat "スペース 入れたい" test test2
"スペース 入れたい"
test
test2
続行するには何かキーを押してください . . .
ひとつずつ表示されています。
引数を取得するように様々な情報を取得する簡単な方法

引数を取得するようにその他の項目を取得するオプションをまとめます。
オプション | 意味 |
---|---|
%~d0 | バッチファイルのドライブ名 |
%~p0 | バッチファイルのパス |
%~dp0 | バッチファイルのドライブ名+パス |
%~f0 | バッチファイル名を含めたパス |
%~n0 | バッチファイル名 |
%~x0 | バッチファイルの識別子 |
%~nx0 | バッチファイル名(識別子含む) |
%~s0 | バッチファイル名を含めたパス(省略形) |
%~a0 | バッチファイルの属性 |
%~t0 | バッチファイルの更新日時 |
%~z0 | バッチファイルの容量(バイト) |
@echo off
echo %~d0
echo %~p0
echo %~dp0
echo %~f0
echo %~n0
echo %~x0
echo %~nx0
echo %~s0
echo %~a0
echo %~t0
echo %~z0
pause
このバッチファイルを実行します。
C:\script\bat_引数>引数_default.bat
C:
\script\bat_引数\
C:\script\bat_引数\
C:\script\bat_引数\引数_default.bat
引数_default
.bat
引数_default.bat
C:\script\bat_引数\引数_D~1.BAT
--a--------
2023/11/26 00:27
339
続行するには何かキーを押してください . . .
バッチファイルの各種データを取得してきています。

【bat】バッチファイルで引数を取得する方法:まとめ

バッチファイルで引数を扱う方法は「%」を使用する事です。
注意点は9番目までしか取得出来ない事です。
そういった場合は「shift」を使用する。
スペースを含んだ引数は”で囲えば良い。しかし”まで含まれる。”を消したい場合は「%~1」を使用する。
引数を全て表示したい場合は「%*」を使用する