如何将带多replace的PowerShell命令在Bat中拆分为多行
解决PowerShell命令换行可读性问题
如果是在CMD提示符或批处理脚本中执行该命令,想要将每个-replace单独换行,需要结合CMD的换行转义符^,同时保证PowerShell语法的正确性:
正确的CMD/批处理写法
powershell -Command "(gc copy.json) ^ -replace 'field_type','field_name' ^ -replace 'aaa','AAA' ^ -replace 'Bbb','BBB' ^ | Out-File copy12345.json"
注意事项:
- 每个换行的位置必须是PowerShell语法允许断行的地方(比如
-replace运算符之前) - 脱字符
^必须是该行的最后一个字符,后面不能有空格或其他字符,否则转义无效
如果是直接在**PowerShell脚本(.ps1)**中编写该命令,无需额外转义,直接换行即可(甚至可以省略PowerShell的反引号换行符,因为PowerShell会自动识别运算符开头的换行):
正确的PowerShell脚本写法
(Get-Content copy.json) -replace 'field_type','field_name' -replace 'aaa','AAA' -replace 'Bbb','BBB' | Out-File copy12345.json
或者保留反引号(可选):
(Get-Content copy.json) ` -replace 'field_type','field_name' ` -replace 'aaa','AAA' ` -replace 'Bbb','BBB' | Out-File copy12345.json
你之前尝试失败的原因大概率是:
- 使用
^时后面附带了空格,导致CMD无法正确识别换行转义 - 断行位置不符合PowerShell语法规则(比如在字符串或括号内部换行)
内容的提问来源于stack exchange,提问作者Luk1919
相关产品推荐
相关产品推荐

