【Batch】引数で渡されたディレクトリを再帰的に回す

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Batch】引数で渡されたディレクトリを再帰的に回す

2022-1-17 |

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の部分に実行したい処理を書く。

まとめ(感想文)

全てもれなく処理すべし。