for(繰り返し処理)の使い方【バッチファイル】

※この記事は「2021年5月1日」に更新しました。

for(繰り返し処理)の使い方を紹介します。

以前、コマンドプロンプトで、バッチファイル入門という記事を書きました。

バッチファイル入門

【コマンドプロンプト】バッチファイル入門

2020年3月28日

そこで軽く紹介しましたが、今回はもう少し詳しく見ていきたいと思います。

forコマンドの使い方

forコマンドの使い方

forコマンドは、繰り返し処理を行うためのものです。

C言語などの高級言語でもおなじみですが、バッチファイルで使う場合、少々むずかしいです。

基本形

forコマンドの基本形は以下の通りです。

for [オプション] %%変数 in 対象 do 処理

指定した回数繰り返す

指定した回数繰り返す使い方を紹介します。

for /l %%変数 in (開始,増分,終了) do 処理

/lオプションを使うことで (開始,増分,終了) という形式を指定することができます。

ここで使う変数は一時的なもので forコマンドだけで有効なものです。

変数名は a~z のいずれか1文字で表します。

例として、1~5 までの数字を順番に出力していくバッチファイルを作成してみます。

@echo off
for /l %%a in (1,1,5) do echo 変数は %%a
pause > nul

結果は以下の通りです。

指定した回数繰り返す

ファイルを対象として繰り返す

ファイルを対象として繰り返す使い方を紹介します。

for %%変数 in 対象 do 処理

例として、カレントディレクトリにある、全てのテキストファイルの先頭に日付を挿入する、バッチファイルを作成してみます。

まずは、適当にテキストファイルを用意します。

せっかくなんで、これもバッチファイルで用意しましょう。

@echo off
type nul > wordpress.txt
type nul > movable-type.txt
type nul > wix.txt
type nul > jimdo.txt
空のテキストファイルを作成する方法
空のテキストファイルを作成するには、type nul > ファイル名.txt を実行します。

次に、作成されたテキストファイルに日付を挿入するバッチファイルを作成します。

@echo off
for %%a in (*.txt) do (ren %%a 20200404%%a)

実行結果は以下の通りです。

ファイルを対象として繰り返す

テキストファイル内のデータを行単位で読んで繰り返す

テキストファイル内のデータを行単位で読んで繰り返す使い方を紹介します。

京都市の行政区を表すテキストファイルです。

京都府 京都市 上京区
京都府 京都市 下京区
京都府 京都市 左京区
京都府 京都市 中京区
京都府 京都市 東山区
京都府 京都市 右京区
京都府 京都市 伏見区
京都府 京都市 北区
京都府 京都市 南区
京都府 京都市 山科区
京都府 京都市 西京区

この中で3番目の区だけを取り出すバッチファイルを作成します。

@echo off
echo -----
for /f "TOKENS=3" %%a in (data.txt) do (
echo %%a
echo -----
)
pause

結果は以下の通りです。

テキストファイル内のデータを行単位で読んで繰り返す
区切り文字の指定について
TOKENS の後ろに delims=, とすると区切り文字を ,(コンマ)に指定することができます。

最後に

いかがでしょうか。

forコマンドは、バッチファイルで使う機会が多く、繰り返し処理をするには欠かせないものです。

少しクセがありますが、実際、簡単なサンプルをコーディングしてみて、動作確認してみると理解しやすいかと思います。

ちなみにバッチファイルではなく、そのまま実行する場合、変数の % は一つになります。