我正在使用批处理文件中运行的 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 中执行所有操作。