【Batch】引数で渡されたディレクトリを再帰的に回す
2022-1-17 | Batch
Batchに引数で渡されたディレクトリ(サブディレクトリを含む)の中のファイルをごにょごにょしたい!
概要
Bacthを使ってディレクトリ(サブディレクトリを含む)の中に保管されてるファイルのフルパスを取得する例を示す。
仕様書
batファイルにディレクトリをドラッグ・アンド・ドロップするとディレクトリの中にある全てのファイルのフルパスを出力する。
サブディレクトリの中のファイルも含む。
引数に渡された直接のファイルやその他のディレクトリ以外の文字列は無視される。
環境
- Windows 10 Home Version 21H1(OS ビルド 19043.1415)
手順書
下記は、引数で渡されたディレクトリの中にある全てのファイル名を出力するサンプルです。
@echo off
:loop
if "%~1" == "" goto end
if exist %~1 (
for /r %~1 %%f in (*) do (
echo %%f
)
)
shift
goto loop
:end
pause
解説
if
で引数が存在してるパスであるか判定し、存在してればfor
で再帰的に処理をする。
for /r %~1 %%f in (*.png) do (
のようにするとディレクトリの中にあるpngファイルのみを処理できる。複数の拡張子を指定したい場合は(*.png, *.jpg)
のように,
で条件を区切って入力する。
echo %%f
の部分に実行したい処理を書く。
まとめ(感想文)
全てもれなく処理すべし。