« FORコマンドで、行のフィールドを順次取り出す。 | トップページ | コマンドプロンプトやバッチファイルで、環境変数に制御文字を入れる。 »

2008年11月 4日 (火)

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

テキストファイルの改行文字は、OSで異なります。
DOS/Windows CR+LF
Unix/Linux  LF
Mac/MainFrame  CR

変換フィルタは、SFUにあり、それだけコピーしても使えます。
dos2unix.exe
unix2dos.exe

SFUがなくても、バッチファイルで代替できます。

dos2unix.cmd <CR+LF >LF
---
@echo off
setlocal disabledelayedexpansion
set LF=^

for /f "delims=" %%1 in ('find /n /v ""') do (
set LINE=%%1
setlocal enabledelayedexpansion
<NUL set /p LINE=!LINE:*]=!!LF!
endlocal
)
---

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

moreを使ってもできますが、その場合はタブが空白展開されます。

« FORコマンドで、行のフィールドを順次取り出す。 | トップページ | コマンドプロンプトやバッチファイルで、環境変数に制御文字を入れる。 »