Windowsのバッチファイルで同じ処理を複数回実施したい場合に、For文を使ってループさせる方法について解説します。
まずは、For文で任意の回数だけ処理を繰り返す場合の記述方法について紹介します。
WindowsのバッチファイルのForループの構文の一例を上記の画像に示します。
最初の「/l」はオプションを表します。WindowsのバッチファイルではFor文の記述の仕方が複数あり、ループ変数を指定し「開始値、増分、終了値」を取ってループさせる場合にはオプション「/l」を使います。
次の「%%i」の箇所は、ループ内で変更される変数で、アルファベット1文字であれば何でも構いません。
最後の「in (0,1,10)」については、0をスタートに1ずつ値を増加させ、10に至ったらループを終了することを表します。このとき、ループ変数である「%%i」の中に、ループごとに0, 1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10という値が入ります。
/lオプションのFor文は、C言語やPythonなどのプログラミング言語において、最もよく見かけるFor文の記述方式であるため、プログラミング経験のある方には馴染みのある記述法かと思いますし、非常によく使います。
以下に掲載したバッチファイルは、0から1刻みで10まで11回のループを繰り返し、echoコマンドを用いて数字をコンソールに表示するバッチファイルです。
上記のバッチファイルを実行すると以下のような結果が得られます。0~10まで1ずつの増分でループが繰り返され、echoコマンドでコンソールに「%%i」の値が表示されています。
次に、ディレクトリ(フォルダ)にあるファイルを対象にループさせる方法を紹介します。
この方法は、例えばあるフォルダに「aaa.jpg」「bbb.jpg」「ccc.jpg」という三つのファイルがあるとき、ファイルを参照してファイルごとに1回ずつ、計3回ループさせることができます。
カレントディレクトリとは、バッチファイルが置いてある場所のフォルダです。このカレントディレクトリを対象に実施する場合には、オプションが不要です。
以下は、カレントディレクトリにあるすべてのファイルのファイルリストを作成するサンプルバッチです。すべてのファイルを対象とする場合には、対象に「*」を指定します。
下記のフォルダにおいて「ForTestFolder.bat」を実行しました。
結果、「filelist1.txt」の中に以下のファイルリストを得ることができました。
拡張子を指定して、例えばjpgファイルのみのファイルリストを作成することもできます。
このときは、以下のように対象に「*.jpg」を指定します。これは「* 」の部分には何が入っても良いことを表します。
結果、「filelist2.txt」の中に以下のファイルリストを得ることができました。
今回はWindowsのバッチファイルでFor文を扱う方法を紹介しました。For文はオプションや使い方が多岐に渡り複雑ですが、使いこなせるとファイルリストの作成等を簡単に行うことができるようになります。