バッチファイルでdirname


ファイルのフルパスを渡して、その親パスを取得するdirname処理をバッチファイルで作ってみます。

ソース

dirname.bat
@echo off

call :dirname C:\hoge\fuga.csv
echo dirname1:%dirname%

call :dirname C:\hoge\fuga\piyo.csv
echo dirname2:%dirname%

exit /b

:dirname

    setlocal
    endlocal & set dirname=%~dp1

exit /b

実行結果

>dirname.bat
dirname1:C:\hoge\
dirname2:C:\hoge\fuga\

解説

バッチパラメータの%~dp1を利用して渡されたパラメータからドライブ文字とファイル名以外のパスだけを取り出すことで実現しています。

関連記事

バッチファイルでbasename