質問: バッチからpowershellコマンドを実行する テキストファイルの非常に長い行(おそらく数十万文字)を短い行(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"