バッチファイルの引数の情報を取得する

バッチファイルの引数(パラメータ)を取得する際には、一部の情報だけを取得することができる。
たとえば、引数の中からドライブ名だけ取得するなんてことができる。


以下のようなバッチファイルでどうなるか試してみる。

@echo off
echo %%0 = %0
echo %%~0 = %~0
echo %%f0 = %f0

echo %%~f0 = %~f0
echo %%~d0 = %~d0
echo %%~p0 = %~p0
echo %%~n0 = %~n0
echo %%~x0 = %~x0
echo %%~s0 = %~s0
echo %%~a0 = %~a0
echo %%~t0 = %~t0
echo %%~z0 = %~z0

echo %%~dp0 = %~dp0
echo %%~nx0 = %~nx0
echo %%~dpnx0 = %~dpnx0
echo %%~ftza0 = %~ftza0

echo %%~pd0 = %~pd0
echo %%~aztf0 = %~aztf0
echo %%~fdpnxatz0 = %~fdpnxatz0

pause

出力結果

%0 = "E:\research\bat\parameter-test.bat"
%~0 = E:\research\bat\parameter-test.bat
%f0 = f0
%~f0 = E:\research\bat\parameter-test.bat
%~d0 = E:
%~p0 = \research\bat\
%~n0 = parameter-test
%~x0 = .bat
%~s0 = E:\research\bat\PARAME~1.BAT
%~a0 = --a------
%~t0 = 2010/09/26 22:55
%~z0 = 417
%~dp0 = E:\research\bat\
%~nx0 = parameter-test.bat
%~dpnx0 = E:\research\bat\parameter-test.bat
%~ftza0 = --a------ 2010/09/26 22:55 417 E:\research\bat\parameter-test.bat
%~pd0 = E:\research\bat\
%~aztf0 = --a------ 2010/09/26 22:55 417 E:\research\bat\parameter-test.bat
%~fdpnxatz0 = --a------ 2010/09/26 22:55 417 E:\research\bat\parameter-test.bat

順番を入れ替えても(%~dp0でも%~pd0でも)結果は変わらないようだ。


詳細はMicrosoftのページなど参照。
http://technet.microsoft.com/ja-jp/library/cc755880%28WS.10%29.aspx
http://technet.microsoft.com/ja-jp/library/cc758944%28WS.10%29.aspx