2022年5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« 純正のforfiles.exeを使おう。 | トップページ | バッチファイル、コンソールアプリなどを非表示で実行する。 »

2006年10月17日 (火)

バッチファイルでファイルを読む方法(その2)

「ファイルの全行を読む。」

× FOR /F %%0 IN (ファイル) DO ECHO %%0

※ 行の一部(第1トークン)しか読めない。

× FOR /F "tokens=*" %%0 IN (ファイル) DO ECHO %%0

※ 行の先行空白が読めない。

× FOR /F "delims=" %%0 IN (ファイル) DO ECHO %%0

※ 空行が読めない。

× FOR /F "delims=[] tokens=1*" %%1 IN ('FIND /N /V "" ^<ファイル') DO ECHO;%%2

※ FINDで行番号[n]を付けて、[と]を区切文字にして、第2トークンを取り出す。
※ 'FIND /N /V "" ファイル'だと、先頭に'---------- ファイル'という行が付く。
※ 行番号nは%%1で取り出せます。
※ 空のとき、「ECHO は <ON> です。」が出ないよう、ECHO;←区切文字を入れる。
※ 行頭に、[や]があると消えるので、駄目ですね。

○  SETLOCAL ENABLEDELAYEDEXPANSION
   FOR /F "delims=" %%0 IN ('FIND /N /V "" ^<ファイル') DO (
    SET L=%%0
    SET N=!L:~1!
    SET /A N=N
    ECHO;!L! !L:*]=!

※ [n]行本体 から*]を削除すると行本体が得られます。
※ n]行本体 をSET /Aで代入すると行番号が得られます。
※ FOR /F "delims=[]" %%1 IN ("%%0") DO ECHO;%%1 としても行番号が得られます。

« 純正のforfiles.exeを使おう。 | トップページ | バッチファイル、コンソールアプリなどを非表示で実行する。 »