コマンドライン(バッチファイル)を使用して、Windows XPマシン上のUNIXからテキストファイルeolをWindows形式に変換しようとしています。それ、どうやったら出来るの?そのためのコマンドは何ですか?ありがとう。
質問する
1340 次
1 に答える
1
この単純なスクリプトは高速で、すべてのTAB文字を8つのスペースに変換することを除けばうまく機能します。スペースの数はMORE/Tオプションで変更できますが、TAB文字を保持する方法はありません。唯一の引数としてファイル名(オプションでパス付き)を渡します。
@echo off
more %1 >%1.new
move /y %1.new %1 >nul
必要なのは、各行を読み取ってエコーすることだけです。FOR / Fコマンドは、空の行を無視することを除いて、完璧です。ここでは、FINDSTRを使用して、各行の前に行番号を付け、その後に。を付けて:
、空の行を保持します。次に、検索と置換を使用して番号プレフィックスを削除します。表示される可能性のあるものを保持するために、ループ内で遅延拡張のオンとオフを切り替える必要があります!
。このスクリプトはTABを保持しますが、1行あたり最大8191バイトに制限されています。また、比較的遅いです。非常に大きなファイルでは非常に遅くなります。
@echo off
setlocal disableDelayedExpansion
>%1.new (
for /f "delims=" %%A in ('findstr /n "^" %1') do (
set "ln=%%A"
setlocal enableDelayedExpansion
echo(!ln:*:=!
endlocal
)
)
move /y %1.new %1 >nul
最後に、これは非常に高速で、私が認識している制限がないハイブリッドバッチ/JScriptソリューションです。
@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment
::************ Batch portion ***********
@echo off
<%1 cscript //E:JScript //nologo "%~f0" >%1.new
move /y %1.new %1 >nul
exit /b
************* JScript portion **********/
while (!WScript.StdIn.AtEndOfStream) {
WScript.Stdout.WriteLine(WScript.StdIn.ReadLine());
}
于 2012-10-22T11:54:06.627 に答える