テキストファイルの非常に長い行(おそらく数十万文字)を短い行(8184文字)に分割する必要があり、.bat
はこのタスクを処理できません。
ただし、PowerShellソリューションを見つけました( ここ ):
(gc in.txt) -replace ".{750}" , "$&`r`n" | sc out.txt
これは、PowerShellウィンドウを開いて、少し調整したバージョンを貼り付けると機能します。ここで、750
は8184
ですが、それを.bat
に含めると次のようになります...
powershell -Command "(gc test.txt) -replace '.{8184}' , '$&`r`n' | sc temp.txt"
...意図したとおりに機能せず、挿入されます...
`r`n
... 8184文字ごとに(これをインラインフォーマットすることはできません、sry)。
私は利用しようとしました:
powershell -Command "& {(gc test.txt) -replace '.{8184}' , '$&`r`n' | sc temp.txt}"
powershell -Command "(gc test.txt) -replace '.{8184}' , '$&\r\n' | sc temp.txt"
powershell -Command "(gc test.txt) -replace '.{8184}' , '$&VbCrLf' | sc temp.txt"
しかし、私はそれを機能させることができません。ここでの問題は何ですか?
`r`n
は改行の正しいエスケープシーケンスですが、問題は、一重引用符で囲まれた文字列が、二重引用符で囲まれた文字列のようにエスケープシーケンスの評価や変数補間を行わないため、文字通りのエスケープシーケンスが出力。文字列を二重引用符で囲まれたPowerShellに渡す必要があります。これは、cmd.exe
の解釈も処理する必要があるため、やや注意が必要です。理解された二重引用符ごとに4つの二重引用符を使用すると、次のことができます。
powershell -Command "(gc test.txt) -replace '.{8184}' , """"$&`r`n"""" | sc temp.txt"