我在批处理文件中运行 PowerShell 来替换字符,但在尝试用 替换 实例时却遇到\"
困难"
。
\
可以通过以下方式逃脱\\
"
可以通过以下方式逃脱""""
这些都可以,但如果有反斜杠旁边双引号,这不起作用:\\""""
仍然可以在批处理文件中使用 PowerShell 来执行此操作吗?
答案1
由于该-Replace
运算符用于匹配正则表达式模式,因此您可以使用[ ]
方括号并将转义字符放在两个单独的集合中,以便对要转义和替换的值进行转义和替换,即'[\\][""]'
。
您可以使用'""""'
单引号和双引号替换字符来替换这两个字符。因此它基本上看起来像这样:(Get-Content $_) -replace '[\\][""]', '""""'
。
请注意假设-replace '[\\][""]', '""""'
您想用\"
just替换,但是如果需要,"
您可以将其更改为用like-replace '[\\][""]', '#'
替换。\"
#
完整的命令行语法
start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem '*.txt' | ForEach-Object {(Get-Content $_) -replace '[\\][""]', '""""' | Set-Content $_.FullName}"
故障排除详细信息...
我使用这个语法来启动单个文件
Powershell.exe -ExecutionPolicy Bypass -Command "Get-ChildItem 'C:\Folder\test.txt' | ForEach-Object {(Get-Content $_) -replace '[\\][""]', '"""' }"
一旦我解决了这个层面的问题,我就会继续执行完整的命令,并针对单个文件运行它,并在每次运行时不断检查它,直到我弄清楚需要什么才能获得最终的期望结果。
支持资源
-
-replace
替换与正则表达式匹配的字符串