« コマンドプロンプトやバッチファイルで、環境変数に改行文字(CR)を入れて使う。 | トップページ | 改行文字変換フィルタをバッチファイルで作る。(その3) »

2008年11月 7日 (金)

改行文字変換フィルタをバッチファイルで作る。(その2)

異常な改行文字(CR+CR+LF)を正常な CR+LF に変換します。

pingなどのunix由来のネットワーク系コマンドの改行文字は異常です。
CR+CR+LF になっています。
コンソール画面で見た目には同じですが、プログラムで処理するときに困ります。

CrCrLf.CMD <CR+CR+LF >CR+LF
---
@echo off
setlocal disabledelayedexpansion
for /f "delims=" %%1 in ('find /n /v ""') do (
set LINE=%%1
setlocal enabledelayedexpansion
call echo;!LINE:*]=!
endlocal
)
---

CRは、%環境変数%の展開時に消えます。

%%FOR変数や!環境変数!は、%環境変数%の後に展開されるので、
echo;%%FOR変数

echo;!環境変数!
では残ります。

しかし、CALL文では、展開が2回実行されるので、
call echo;%%FOR変数

call echo;!環境変数!
では、2回目で消えます。

« コマンドプロンプトやバッチファイルで、環境変数に改行文字(CR)を入れて使う。 | トップページ | 改行文字変換フィルタをバッチファイルで作る。(その3) »