今まで、for /f コマンドの eol= オプションについては無視してきた。これは、読み込んだ行の行頭の文字によって読み飛ばす機能だが、デフォルトの文字が「;」(セミコロン)である。なので、昔作ったhead.batやtail.batでは、空行だけでなく行頭がセミコロンの行が飛ばされる。
これを無効にするのが難しい。
for /f "delims= eol=" %%A in (〜) do 〜
でいいと思ったのだが、これだと「"」(引用符)がeol文字になってしまう。かといって、
for /f "delims= eol= " %%A in (〜) do 〜
だと、「 」(空白)がeol文字になってしまう。^ とかを使ってもダメのようで、
for /f delims^=^ eol^= %%A in (〜) do 〜
と、引用符無しでオプションを書くとなんとかいけるようだ。
今までのスクリプトを全部これに書き直すかというと、ちょっとためらう。
delims= のデフォルトが空白なのはいいとしても、eol= のデフォルトは空でよかったのにと思うが。