尝试在 powershell 中转义逗号旁边的双引号,通常的方法失败

尝试在 powershell 中转义逗号旁边的双引号,通常的方法失败

我正在使用批处理文件中运行的 powershell 替换文本,并使用单引号括起要替换的文本。

我发现尝试转义后跟双引号的逗号不能按照通常的方式完成。

,通过使用","

"通过使用""""

"如果和,不相邻,则上述方法有效,但如果它们相邻,则像这样......

",

用这个来转义两个字符,不起作用:

'""""","'

那是四个双引号来转义"字符,然后再两个双引号来转义,字符,用单引号括起来。

请不要建议单独使用 powershell,我想保持原样,从批处理文件运行。

其余一切都运行正常,只有这个",问题。

干杯。

答案1

好的,我解决了这个问题,它需要删除最后一个双引号,这对我来说似乎很奇怪,因为它违反了有关转义特殊字符的规则,但这就是有效的方法。也许是因为我在批处理文件中运行 powershell(即使我使用 powershell,反引号也是无用的)。

'"""",'

当逗号后再次出现字符时这也有效。

例如上面的方法可以实现这个功能:

some text", then some more text

将其更改为:

some text then some more text

答案2

在 Powershell 中,您可以通过两种方式使用字符串。

"...."'....'

当您使用第一个时,第二个引号字符不必转义。如果您使用第二个,第一个引号字符不必转义。例如:"This is a 'test'"'This is a "test" too.'

此外,'...'是文字文本,因此'$test'将逐字打印$test,而"$test"将打印变量 $test 中的所有内容。

转义字符串可以通过多种方式完成,\"是一种方式。"This is a test $('"') too"是另一种方式。

我发现根据周围的代码来使用看起来最好的东西通常会有所帮助。

因为您正在结合批处理脚本和 powershell,所以 "" 将起作用,因为它是转义 " 的批处理方式,但这会产生奇怪的结果,建议不要使用它。因此建议根本不使用批处理,而直接在 PowerShell 中执行所有操作。

相关内容