komorebikoboshiのブログ

プログラミング記事(趣味レベル)が多め。

バッチパラメーターの修飾子

メモ

このようなバッチファイルを用意して

@echo off

echo %%1 : %1
echo %%~d1 : %~d1
echo %%~p1 : %~p1
echo %%~n1 : %~n1
echo %%~x1 : %~x1
echo %%~dp1 : %~dp1
echo %%~nx1 : %~nx1
echo %%~dpn1 : %~dpn1

このように実行すると

test.bat "C:\Program Files\Internet Explorer\iexplore.exe"

このように分解される。

%1 : "C:\Program Files\Internet Explorer\iexplore.exe"
%~d1 : C:
%~p1 : \Program Files\Internet Explorer\
%~n1 : iexplore
%~x1 : .exe
%~dp1 : C:\Program Files\Internet Explorer\ ←「"」が外れる
%~nx1 : iexplore.exe
%~dpn1 : C:\Program Files\Internet Explorer\iexplore ←「"」が外れる

エンコーダーなんかで拡張子のみを変えたいなら

%1 %dpn1.mp3
"C:\honya rara\test.wav" C:\honya rara\test.mp3

↑「"」が外れてスペースがコマンドの区切りと解釈されてエラーになる
"%dpn1.mp3" とくくらないとだめ。
「""」でくくる↓

%1 "%dpn1.mp3"
"C:\honya rara\test.wav" "C:\honya rara\test.mp3"