0

コマンドライン(バッチファイル)を使用して、Windows XPマシン上のUNIXからテキストファイルeolをWindows形式に変換しようとしています。それ、どうやったら出来るの?そのためのコマンドは何ですか?ありがとう。

4

1 に答える 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 に答える