【bat】バッチファイルで引数を取得する方法!スペース含む時なども解説

サーバー

バッチファイルを使用すると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\17_引数>引数_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つ目の引数を取得できています。

引数を取得する時に注意する事

script

ローマ字にしてみると9番目までしか取得出来ていません。

%10以降は%1の引数に後の数字が結合したものが表示されるからです。

C:\script\bat\17_引数>引数_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\17_引数>引数_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つとして扱う方法

script

空白が入った引数を1つの引数として扱いたい場合はどうでしょうか?

C:\script\bat\17_引数>引数_default.bat スペース を入れる test
スペース
を入れる
test

空白が引数の区切りとなっているので、引数1と引数2に分かれてしまいます。

空白が入った引数を1つの引数として扱いたい場合は「”」で囲いましょう!

C:\script\bat\17_引数>引数_default.bat "スペース を入れる" test test
"スペース を入れる"
test
test

想定通り空白があっても1つの引数として扱われています。

しかし”まで表示されています。”なしにする事はどうでしょうか?

引数取得する時に「”」を削除する簡単な方法

“」を削除する方法は「%~1」を使用します。

@echo off

echo %0
echo %~1
echo %2
echo %3
pause

バッチファイルを上のようにして実行します。

C:\script\bat\17_引数>引数_default.bat "スペース を入れる" test test
引数_default.bat
スペース を入れる
test
test

「”」が表示しなくなりました!

引数全部を表示する簡単な方法

引数を全て表示したい場合はどうでしょうか?

「%*」を使用する事で可能です。

@echo off

echo %0
echo %~1
echo %2
echo %3
echo %*
pause

実行してみます。

C:\script\bat\17_引数>引数_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\17_引数>引数_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\17_引数>引数_default.bat
C:
\script\bat\17_引数\
C:\script\bat\17_引数\
C:\script\bat\17_引数\引数_default.bat
引数_default
.bat
引数_default.bat
C:\script\bat\17_引数\引数_D~1.BAT
--a--------
2023/11/26 00:27
339
続行するには何かキーを押してください . . .

バッチファイルの各種データを取得してきています。

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

スクリプト

バッチファイル引数を扱う方法は「%」を使用する事です。

注意点は9番目までしか取得出来ない事です。

そういった場合は「shift」を使用する。

スペースを含んだ引数は”で囲えば良い。しかし”まで含まれる。”を消したい場合は「%~1」を使用する。

引数を全て表示したい場合は「%*」を使用する

サーバー

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次