Windows バッチ - ループ・ファイルの読込

 
1. カウンタループ
2. ファイル読み込みによるループ
3. ファイルを1行だけ読み込むには
4. ファイルを特定の行数だけ読み込む

1. カウンタループ

 カウンタによるループの基本形は

FOR /L カウンタ IN (初期値, インクリメント値, 最大値) DO (
    処理
)
 になります。  カウンタ変数は「%%英字1文字」です。

ECHO OFF

FOR /L %%I IN (1, 1, 5) DO (
    ECHO %%I
)

ECHO:

FOR /L %%I IN (1, 2, 5) DO (
    ECHO %%I
)
 というバッチファイルを実行すると以下の出力になります。

ECHO OFF
1
2
3
4
5

1
3
5

2. ファイル読み込みによるループ

 ファイル読み込みによるループの基本形は

FOR /F 変数名 IN (ファイル名) DO (
    処理
)
 になります。  変数名は %%英字1文字 でないとまずいようです。

ECHO OFF

FOR /F %%B IN (TEST.txt) DO (
    ECHO %%B
)
 というバッチファイルを作成し  TEST.txt に

A
B
C
 と記述して、実行すると以下の出力になります。

ECHO OFF
A
B
C

3. ファイルを1行だけ読み込むには

 結論からいうと、1行だけ読み込んで break するしかないようです。  つまり

FOR /F %%変数名1 IN (ファイル名) DO (
	SET 変数名2=%%変数名1
	GOTO LABEL1
)
:LABEL1

4. ファイルを特定の行数だけ読み込む

 ある特定の行数までファイルを読んで、それで終わりにするには、いろいろと手順が必要です。  変数を数値として扱わなければならない。インクリメントしなければならない。  ということで下記のサイトを参考にさせていただきました。
【CMDバッチ】変数に格納した数字を数値として扱う : アルゴリズム日和」
「バッチファイルで数値を比較する」
「Windows、バッチファイル(.bat)のfor文の中で数値をインクリメントする|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~
 SAMPLE.txt というファイルから 3行だけ読み込んで表示して終了するとします。  こういう処理にします。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET /A MAX=3
SET /A COUNT=0


FOR /F %%B IN (SAMPLE.txt) DO (
    SET LINE=%%B
    ECHO !LINE!

	SET /A COUNT=COUNT+1

	ECHO COUNT=!COUNT!
	ECHO MAX  =%MAX%

	IF !COUNT! GEQ %MAX% GOTO END
)

:END
 SAMPLE.txt の中身を

あいうえお
ABCDE
いろはにほ
カキクケコ
FGHIJ
へとちりぬ
 として、上記のバッチを実行すると、下記の結果が得られます。

あいうえお
COUNT=1
MAX  =3
ABCDE
COUNT=2
MAX  =3
いろはにほ
COUNT=3
MAX  =3
 くどくどと解説しなければならない内容なのですが・・・それはまた後日。
 
 
カウンタバックグラウンド