PowerShell 中双引号旁边的反斜杠转义失败

PowerShell 中双引号旁边的反斜杠转义失败

我在批处理文件中运行 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 '[\\][""]', '"""' }"

一旦我解决了这个层面的问题,我就会继续执行完整的命令,并针对单个文件运行它,并在每次运行时不断检查它,直到我弄清楚需要什么才能获得最终的期望结果。

支持资源

相关内容