for /f の eol= オプション

今まで、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= のデフォルトは空でよかったのにと思うが。