從批次執行 powershell 命令

從批次執行 powershell 命令

我需要將文字檔案中的很長的行(可能有數十萬個字元)拆分為較短的行(8184 個字元),並且無法.bat處理此任務。

但是,我找到了一個PowerShell解決方案(這裡):

(gc in.txt) -replace ".{750}" , "$&`r`n" | sc out.txt

當我打開 PowerShell 視窗並貼上稍微調整的版本(在哪裡7508184並執行它時,這是有效的,但是當我將其包含在我的.bat像這樣的...中時:

powershell -Command "(gc test.txt) -replace '.{8184}' , '$&`r`n' | sc temp.txt"

....它沒有按預期工作並插入...

`r`n

……在每第 8184 個字元之後(我無法內聯格式化它,抱歉)。


我嘗試利用:

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"

但我無法讓它發揮作用。這裡有什麼問題?

答案1

`r`n是換行符號的正確轉義序列,但問題是單引號字串不執行雙引號字串所做的轉義序列評估或變數插值,因此文字轉義序列最終出現在輸出中。我們需要將字串傳遞給雙引號的 PowerShell,這有點棘手,因為我們cmd.exe還必須處理 的解釋。每個理解的雙引號使用四個雙引號可以完成這項工作:

powershell -Command "(gc test.txt) -replace '.{8184}' , """"$&`r`n"""" | sc temp.txt"

相關內容