DOSバッチでUNIXテキストファイルの文字列置換
お世話になります。
早速ですが、
「DOSバッチでテキストファイルの文字列置換を行うプログラム」がいろいろ紹介されていたので、
皆さんのプログラムを流用させていただき、勝手に継ぎ足したDOSバッチプログラムを以下の
ように作りました。
このDOSバッチで置換されたテキストファイルに2つの問題が発生して困っています。
問題 1)UNIXテキストファイルの改行コードがLFからCR+LFに変ってしまう。
文字列置換した後にファイルサイズが大きくなっていたので発見しました。
問題 2)空白行がなくなる。
DOSプログラムでは、対応不可でしょうか?
やはり、sed,awk,WHS,power shell を使わないと解決しませんか?
-(DOSプログラム f0.bat)------------------------------------------------------
::** @echo off
setlocal ENABLEDELAYEDEXPANSION
set fname=%1
copy /b %fname% org >nul
type nul >%fname%
for /f "delims=" %%a in (org) do (set line=%%a&&set l=!line:abc=xxx!&&echo !l!>>%fname%)
del org
goto end
:end
exit /b 0
-(実行時の標準出力結果 list)-----------------------------------------------
C:\>setlocal ENABLEDELAYEDEXPANSION
C:\>set fname=t22.txt
C:\>copy /b t22.txt org 1>nul
C:\>type nul 1>t22.txt
C:\>for /F "delims=" %a in (org) do (set line=%a && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>(set line=J0000000 && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>(set line=HHH && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>(set line=519 && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>(set line=2011-08-28 12:16:44.98302 && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>(set line=2011-08-28 12:16:44.016114 && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>(set line=0 && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>(set line=abc && set l=!line:abc=xxx! && echo !l! 1>>t22.txt )
C:\>del org
C:\>goto end
C:\>exit /b 0
--(置換前 t22.org LF改行コード)--------------
J0000000
HHH
519
2011-08-28 12:16:44.98302
2011-08-28 12:16:44.016114
0
abc
--(置換後 t22.txt CR+LF改行コード)-----------
J0000000
HHH
519
2011-08-28 12:16:44.98302
2011-08-28 12:16:44.016114
0
xxxx
------------------------------------------
皆さんのご意見、ご指導をお待ちしてます。
お礼
御回答ありがとうございました。 あ!そうだったのですか 了解しました^^