【bat】ドラッグしたファイルのパス取得まとめ

batにドラッグしたファイル/フォルダを処理する~みたいなスプリクトをよく作るので、機能をまとめました。
”右クリック>送る”でもドラッグしたことと同じ動作です。

結果まとめ(基本)

ディレクトリ「C:\test」でフォルダ「123」、ファイル「ABC.txt」を「test.bat」へドロップしたときの動作。
ドラッグしたファイル・フォルダのパスが、引数としてbatファイルに渡されます。

test.bat
@echo off

echo %0 
echo %1 
echo %2
echo %*

pause
test.bat
項目説明結果
%0バッチファイル自身のパス“C:\test\test.bat”
%11つ目の引数C:\test\ABC.txt
%22つ目の引数C:\test\123
%*全ての引数
(半角スペース区切り)
C:\test\ABC.txt C:\test\123

パスに全角スペースを含む場合%*を使用しましょう

%1等を使用すると、全角スペースで分割されてしまいます。
例:「C:\test\A BC.txt」をドラッグ 
  ⇒ %1:C:\test\A  %2:BC.txt

結果まとめ(応用)

上記の%1、%2などに文字列を追加することでフルパス以外の取得も可能です。(%*は不可)
また、これらは組み合わせて使用することもできます。
「C:\test\ABC.txt」をドラッグしたときの結果をまとめました。

項目説明結果
%~1フルパスC:\test\ABC.txt
%~f1完全修飾パス名
(「%~1」と同じ)
C:\test\ABC.txt
%~d1ドライブレターC:
%~p1存在するフォルダ\test\
%~n1ファイル名
(拡張子除く)
ABC
%~x1拡張子.txt
%~s1フルパスの短縮
(長い時のみ)
C:\test\ABC.txt
%~a1属性–a——–
%~t1更新日時2024/06/20 08:05
%~z1サイズ0
%~dp1組み合わせC:\test\
%~dpn1組み合わせC:\test\ABC