在Windows批处理中使用Powershell命令和反向换行符

我正在尝试编写一个窗口批处理,它将用一个换行符来replace出现在括号内的(> <)。 我是Powershell的新手,但是在寻找可能的解决scheme时,我从Powershell中find了以下的工作:

(get-content input.txt) -replace "><", ">`n<" | set-content output.txt 

要在Windows批处理中使用这个,我需要把它包装进去

  powershell -command "arguments" 

所以最后的命令是这样的:

 powershell -command "(gc input.txt) -replace '><', '>`n<' | sc output.txt" 

但是,这当然不起作用,因为围绕replace文本的单引号导致严重的引号转义字符被字面上处理。

我已经search了越来越多的转义字符的正确组合,以允许PS转义字符被识别,并在这里find了类似的答案,但是当我尝试这个build议时,我得到了一个“<在这个时候是意外的“错误,我想我所需要的是更复杂,因为我的searchstring也包含angular括号。

看看powershell.exe命令行选项。 您可以使用脚本块:

 powershell -command {(gc input.txt) -replace "><", ">`n<" | sc output.txt} 

避免使用转义字符和双引号?

 powershell -command "(gc d:\t\input.txt) -replace '><', ('>'+[char]10+'<') | sc d:\t\output.txt" 

我已经解决了这个问题。 我也用延迟扩展,所以最后的命令是:

 powershell -Command "(gc !inputfile!) -replace (\"^>^<\", \"^>`n^<\") | sc !outputfile!" 

所以它实际上使用了三种不同类型的转义字符! \和^和`的组合。

我希望我可以说我是按照逻辑来解决的,但最后它只是一个随机尝试,在<>上使用了不同的转义。 但现在这是一个很好的参考如何在Windows批处理中使用powershell,而不使用单引号将转义字符转换为文字。