批量执行 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还必须处理 's 的解释。每个理解的双引号使用四个双引号即可完成此工作:

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

相关内容