【Batch】引数で渡されたファイルとディレクトリの中に含まれるファイルのフルパスを全て取得する
2022-1-28 | Batch
Batchに引数で渡されたファイルとディレクトリの中に含まれるファイルのフルパスを全て取得したい!
概要
Bacthを使って引数で渡されたファイルとディレクトリの中に含まれるファイルのフルパスを全て取得する例を示す。
仕様書
batファイルにファイルやディレクトリをドラッグ・アンド・ドロップするとディレクトリの中にある全てのファイルを含む全てのファイルのフルパスを出力する。
サブディレクトリの中のファイルも含む。
引数で渡されたファイルやディレクトリ以外の文字列は無視される。
環境
- Windows 10 Home Version 21H1(OS ビルド 19043.1415)
手順書
下記は、引数で渡されたファイルとディレクトリの中に含まれるファイルのフルパスを全て出力するサンプルです。
@echo off
:loop
if "%~1" == "" goto end
set attr=%~a1
if exist %~1 (
if %attr:~0,1%==d (
for /r %~1 %%f in (*) do (
call:test1 "%%f"
)
) else if %attr:~0,1%==- call:test1 "%~1"
)
shift
goto loop
:end
pause
exit /b
:test1
echo %1
exit /b
解説
if exist %~1
で引数が存在してるパスであるか判定する。
if %attr:~0,1%==d
で引数がディレクトリであるか判定する。ディレクトリであればfor
で再帰的に処理をする。
call:test1 "%%f"
でtest1
サブルーチンへファイルのフルパスを渡す。
else if %attr:~0,1%==-
で引数がファイルであるか判定する。ファイルであれば、ディレクトリの場合と同様にcall:test1 "%%f"
でtest1
サブルーチンへファイルのフルパスを渡す。
:test1
とその下にあるexit /b
の間に行いたい処理を入力する。
まとめ(感想文)
全てもれなく処理すべし。