kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

Windows バッチファイルで複数ファイルに対して一括処理を行う

Windows環境で、複数ファイルに対して、一括処理を行うようなバッチファイルの書き方を調べてみました。

バッチファイルの名前を「foldercmd.bat」、ファイルに対する処理を「filecmd.bat」として、次にサンプルを記述しました。

@echo off
rem 指定フォルダ配下のファイル/ディレクトリを再帰的に
rem 処理するバッチファイルサンプル

rem 指定フォルダ直下のファイルに対する処理
for %%a in (%1\*) do call filecmd.bat "%%a"

rem 下位フォルダを再帰的に処理
for /d %%a in (%1\*) do call foldercmd.bat "%%a"

注意点

  • for文について、オプションなしの場合は、「(%1\*)」がファイルの一覧に展開されます。オプション/d付きの場合は、フォルダの一覧に展開されます。
  • for文から呼び出すコマンドは1つだけらしいです。なので、ファイルに対して複数のコマンドを実行したい場合は、上記のように単一ファイル処理用のバッチファイルを作成し、その中で複数コマンドを実行する形式になると思います。
  • 「%%a」をダブルクォーテーションで括っているのは、空白含むパスに対応するためです。