覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

MS-DOSコマンドでファイルパスからディレクトリのパスやファイル名を取得する

C:\app\SampleApp\Launcher.exe というパスがあった時に、
ファイルが存在するディレクトリのパス C:\app\SampleApp\ と ファイル名 Launcher.exe を抽出したい。という要件があった場合

これをWindowsのDOSコマンドで実現するために、

ディレクトリの抽出には以下を使用します。(以下は、 %1 のパラメータを対象としています)

%~dp1

ファイル名の抽出には以下を使用します。(以下は、 %1 のパラメータを対象としています)

%~nx1


上記のコマンドを実行するExtractPath.cmdというファイルを以下のように記述して

@echo off

echo [DirPath]:  %~dp1

echo [FileName]: %~nx1

パラメータにパスを与えて実行すると

ExtractPath.cmd C:\app\SampleApp\Launcher.exe


結果は以下のようになります。

C:\Samples\ExtractPath.cmd C:\app\SampleApp\Launcher.exe
[DirPath]:  C:\app\SampleApp\
[FileName]: Launcher.exe


実行したコマンド自体のパスの抽出

上記と同様でしかないですが、引数ではなく自分自身のコマンドのディレクトリとファイル名の抽出は

%~dp0%~nx0 で可能です。


ExtractPath2.cmdというファイルを以下のように記述して

@echo off

echo [DirPath]:  %~dp0

echo [FileName]: %~nx0

これを実行すると

ExtractPath.cmd


結果は以下のようになります。

C:\Samples\ExtractPath2.cmd
[DirPath]:  C:\Samples\
[FileName]: ExtractPath2.cmd


無事に、DOSコマンドでもファイルパスからディレクトリのパスやファイル名の抽出が実現できました。