環境変数:Windowsで予約されている変数で何かと便利に利用できます。
echo %CD% REM 現在のパス名(カレントディレクトリ名)を取得
batファイルを実行すると %0 に自身のフルパス名 が入り、%1以降に引数が入ります。この引数に任意のパス名が入っている場合にも利用できます。
%0や、引数が入った%1などに入ったファイル名が入っていれば、以下の方法で一部を抽出できます。
REM 自分自身のパス、ファイル名を抽出する
set "FULLPATH=%~0" REM ファイルまでのフルパス
set "FILENAME=%~n0" REM ファイル名
set "EXTNAME=%~x0" REM 拡張子
set "FILESNAME=%~nx0" REM ファイル名.拡張子
set "DRIVENAME=%~d0" REM ドライブ名
set "PATHNAME=%~p0" REM パス名(フォルダー名)※ドライブ名を除くファイル名手前までパス名
set "FLDNAME=%~dp0" REM パス名(フォルダー名)※ドライブ名含む
set "DATE=%~t0" REM 自身のファイル更新日時 ※バッチファイル自身の参照(%0)の場合、開いた日時になるようです。
通常の変数にファイル名が入っていても上記方法をそのまま利用できませんので以下の方法で抽出します。
set "fNAME=c:\test\sample.txt"
for /f %%f in ("%fName%") do (
set "FULLPATH=%%~f" REM ファイルまでのフルパス
set "FILENAME=%%~nf" REM ファイル名
set "EXTNAME=%%~xf" REM 拡張子
set "FILESNAME=%%~nxf" REM ファイル名.拡張子
set "DRIVENAME=%%~df" REM ドライブ名
set "PATHNAME=%%~pf" REM パス名(フォルダー名)※ドライブ名を除くファイル名手前までパス名
set "FLDNAME=%%~dpf" REM パス名(フォルダー名)※ドライブ名含む
set "FILEDATE=%%~tf" REM ファイルの更新日時 yyyy/MM/dd hh:mm
)
echo FULLPATH=%FULLPATH% FILENAME=%FILENAME% EXTNAME=%EXTNAME% FILESNAME=%FILESNAME%
echo DRIVENAME=%DRIVENAME% PATHNAME=%PATHNAME% FLDNAME=%FLDNAME% FILEDATE=%FILEDATE%