バッチのパラメータを改めて理解しよう!

Windows 11

Windowsのバッチプログラムを組む際、バッチのある場所は「%~dp0」で取得できますが、この「%~dp0」ってなんだか知って使ってますか?
改めてこのパラメータのオプションの構文を理解しておきましょう!

オプション指定の構文をまとめてバッチに書いてみました。バッチのファイル名は、「BathFileParameters.bat」です。

@echo off
echo [%%1は、第1引数のファイル名]
echo %1
echo.
echo [%%~1は、%%1を展開し、周囲の引用符(")を削除]
echo %~1
echo.
echo [%%~f1は、完全修飾パス名に展開]
echo %~f1
echo.
echo [%%~d1は、ドライブ文字に展開]
echo %~d1
echo.
echo [%%~p1は、パスに展開]
echo %~p1
echo.
echo [%%~n1は、ファイル名に展開]
echo %~n1
echo.
echo [%%~x1は、ファイル拡張子に展開]
echo %~x1
echo.
echo [%%~s1は、展開されたパスには短い名前のみが含まれます]
echo %~s1
echo.
echo [%%~a1は、ファイル属性に展開]
echo %~a1
echo.
echo [%%~t1は、ファイルの日付と時間に展開]
echo %~t1
echo.
echo [%%~z1は、ファイルのサイズに展開]
echo %~z1
echo.
echo [%%~dp1は、ドライプ文字とパスに展開]
echo %~dp1
echo.
echo [%%~nx1は、ファイル名と拡張子に展開]
echo %~nx1
echo.
echo [%%~ftza1は、dirのような出力行に展開]
echo %~ftza1
echo.


「echo.」は、改行を出力するためのものです。このバッチに与える引数は、

BathFileParameters.bat "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"

です。実際に実行した結果は、以下です。

[%1は、第1引数のファイル名]
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"

[%~1は、%1を展開し、周囲の引用符(")を削除]
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe

[%~f1は、完全修飾パス名に展開]
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe

[%~d1は、ドライブ文字に展開]
C:

[%~p1は、パスに展開]
\Program Files (x86)\Microsoft\Edge\Application\

[%~n1は、ファイル名に展開]
msedge

[%~x1は、ファイル拡張子に展開]
.exe

[%~s1は、展開されたパスには短い名前のみが含まれます]
C:\PROGRA~2\MICROS~1\Edge\APPLIC~1\msedge.exe

[%~a1は、ファイル属性に展開]
--a--------

[%~t1は、ファイルの日付と時間に展開]
2021/06/03 15:41

[%~z1は、ファイルのサイズに展開]
3278224

[%~dp1は、ドライプ文字とパスに展開]
C:\Program Files (x86)\Microsoft\Edge\Application\

[%~nx1は、ファイル名と拡張子に展開]
msedge.exe

[%~ftza1は、dirのような出力行に展開]
--a-------- 2021/06/03 15:41 3278224 C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe

では、まとめです。

バッチパラメーター説明
%1第1引数のファイル名
%~1%1を展開し、周囲の引用符(“)を削除
%~f1完全修飾パス名に展開
%~d1ドライブ文字に展開
%~p1パスに展開
%~n1ファイル名に展開
%~x1ファイル拡張子に展開
%~s1展開されたパスには短い名前のみが含まれます
%~a1ファイル属性に展開
%~t1ファイルの日付と時間に展開
%~z1ファイルのサイズに展開
%~dp1ドライプ文字とパスに展開
%~ftza1dirのような出力行に展開
バッチパラメーター一覧
noru
noru

では!では!

コメント

タイトルとURLをコピーしました