FOR文


 バッチファイルの中で、同じような処理をパラメータだけ変更して何度も繰り返したいようなときがあります。このようなときに用いられるのがFOR文です。
この文には私はさんざん悩まされました。そんなわけで言葉でこいつを説明するのはちょっと難しいですので、いきなり書式から説明して例文をいくつか取り扱ってみることにしましょう。
FOR文は以下の書式で利用します。

FOR %%変数 IN (処理対象) DO コマンド %%変数

あれれれれ、これは又ややこしいですね。わかりやすく説明するために、これを三つに区切ってみましょう。

このようになります。
 まず一つ目の「FOR %%変数」は、子の変数の中に、処理対象のものが入っている間は、処理を繰り返しなさいという意味の命令文です。なお、子の変数には数字を使用してはいけません。
 次の「IN (処理対象)」ですが、ここにはその後のコマンドに渡したいパラメータとなる処理対象を指定します。
 そして最後の「DO コマンド %%変数」の部分に、実行したいコマンドと最初に指定した変数を書くことで、処理対象が存在する間は、何度もこのコマンドが実行されます。

 たとえば処理対象に1〜9間での数字を指定して、コマンドに「ECHO」を指定すると、1〜9間での数字が表示されて、数を数えているような感じになります。以下のような記述です。

FOR %%A IN (1 2 3 4 5 6 7 8 9) DO ECHO %%A

これを実行すると、以下のようにバッチファイルの中で記述しているのと全く同じことになります。

ECHO 1
ECHO 2
ECHO 3
ECHO 4
ECHO 5
ECHO 6
ECHO 7
ECHO 8
ECHO 9



 また、子の処理対象の部分を

IN (*.TXT)

と記述すると、拡張子がTXTのファイルがすべて処理対象になります。
それではこれを利用して、カレントディレクトリに存在するテキストファイルを一つにまとめるバッチファイルを作成してみましょう。


REM File Name FOR1.BAT
@ECHO OFF ECHO テキストファイルを連結してRENKETSU.TXTというファイルにまとめます。
FOR %%T IN (*.TXT) DO TYPE %%T>>RENKETSU.TXT
ECHO 作業終了。

 このようにすることで、ワイルドカードに対応していないMS-DOSコマンドを何度も実行するための処理を過下記並べる煩わしさから解放されることができます。
 次はちょっとひねくれた応用です。
指定されたパラメータがA B C のいずれかを判別します。


REM File Name For2.BAT
ECHO パラメータ判別。
FOR %%A IN (A B C) DO IF "%1"=="%%A" GOTO %%A
ECHO パラメータが A B C のいずれでもありません。
:A
ECHO Aが指定されました。
GOTO END
:B
ECHO Bが指定されました。
GOTO END
:C
ECHO Cが指定されました。
GOTO END
:END
ECHO おしまい。


 こんな感じにFOR文は使い方次第でとても便利に利用できますので、是非がんばってマスターしてみてください。

次へ

バッチファイル講座の目次に戻る

MS-DOSの部屋に戻る

トップページに戻る