Hatena::ブログ(Diary)

kurukuru-papaの日記

2008-08-05

[] 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」をダブルクォーテーションで括っているのは、空白含むパスに対応するためです。

じゃくじゃく 2008/08/11 06:33 call :label を使えば、単一ファイル処理用の記述を同じバッチ内に記述出来ますので、単一ファイル処理用のバッチファイルを作らなくて済みます。
また下位フォルダを“再帰的”に処理だったら、/r オプションが必要でしょう。

じゃく http://homepage1.nifty.com/jak/batch/

かっこかっこ 2008/09/11 10:07 >for文から呼び出すコマンドは1つだけらしいです。
()で複数行を囲めばいい。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kurukuru-papa/20080805/1217945140