FOR /F の eol について
eol は end of line ではありません。除外行行頭文字です。exclusive of line ?
ヘルプの
eol=c - 行末のコメント文字を指定します (1 文字)。
は嘘です。行頭が正しい?
eol文字のデフォルトは ; です。これは要注意です。eol=は必須と思ったほうが安全です。
eol文字がdelims文字に含まれると、eol文字は無効になります。
なので、eol文字をなくすには、delims文字と同じものを指定するとよいでしょう。
しかし、delims文字がないときに、eol文字をなくすのは、難しいです。
そこで、データに含まれない文字、制御文字を指定するとよいでしょう。
メモ帳では、DEL文字が使えます。入力は、Ctrl+BSキー、または、Alt+テンキーの0127です。
コマンドプロンプトでは、いろんなものが使えますが、^L や ^[ が使えます。
逆に、delims文字と同じものをeol文字に指定したいときは、困ります。
そういうときには、FOR文を2段組みにするとよいでしょう。
FOR /F "delims= eol= " %%I IN (...) DO FOR /F "eol= delims= " %%J IN ("%%I") DO ...
delims=なし eol=空白 eol=なし delims=空白
例えば、DIR /X の結果から短いファイル名を取り出すには、
FOR /F "delims= eol= " %%0 IN ('dir/x %1') DO FOR /F "tokens=4" %%4 IN ("%%0") DO ECHO %~dps1%%4
delims=なし eol=空白 eol=; delims=空白タブ
« テンポラリファイルの代わりに環境変数を使う。 | トップページ | ファイル名に=;,や全角空白を使うときは、半角空白も併せて使うべし。 »