バッチファイルに引数で渡されたファイルのパスを変換/抽出する

– 引数(フルパス)は %1 … %n に格納される。

> echo %1
C:\WINDOWS\system32\mspaint.exe

– 部分だけ取り出すには %~n1 のように %~ で始め、次に取り出す部位の略字, 最後に引数の番号を指定する。
ファイル名: n

> echo %~n1
mspaint.exe

ドライブ名: d

> ecoh %~d1
C:

ドライブ、ファイル名を含まないパス: p

> echo %~p1
\WINDOWS\system32\

フルパス: f

> echo %~f1
C:\WINDOWS\system32\mspaint.exe

bat にフルパスをしたかファイル名だけを指定したかに問わず、同等の結果を返す。
上記の結果を短いファイル名で取得: s を追加

> echo %~sp1
\PROGRA~1\foo\

– 参照:
cmd.exe のコマンドヘルプ
 for /?
 call /?