使用批处理 powershell 命令将文件中的两个单引号替换为单引号

Replace single quote by two single quotes in a file with batch powershell command

我目前正在开发自动安装程序。它必须执行 SQL 命令。我决定用一个简单的批处理文件来创建它,这样我就可以使用 sqlcmd 或 Powershell 等命令。

我正在处理一个 XML 文件,该文件将被插入到另一个文件中。首先,我必须替换其中的一些字符串。我成功地使用了这样的 -replace 命令:

powershell -Command "(gc source_file.xml) -replace 'utf-8', 'utf-16' | sc updated_file.xml"

现在,updated_file.xml 仍然包含我想用 '' 替换的单引号(两个单引号)。我想再次使用替换命令进行替换。我试图转义单引号字符,但没有成功:

powershell -Command "(gc source_file.xml) -replace "`'", "`'`'" | sc updated_file.xml"

错误表明单引号没有被转义。更重要的是,在我的例子中,替换命令似乎只读取单引号之间的字符串。我也试过 regex::Escape("`'") 但没有成功。

你有什么想法吗?

非常感谢!

试试这个:

powershell -Command "(gc source_file.xml)  -replace 'utf-8', 'utf-16' -replace '''', '''''' | sc updated_file.xml"

对于 cmd.exe 你必须用反斜杠转义内部双引号,所以这应该有效:

powershell -NoP -C "(gc source_file.xml) -replace 'utf-8','utf-16' -replace \"'\",\"''\" | Set-Content updated_file.xml" 

提示:别名 sc 在即将发布的 PowerShell 版本中已被删除,因此请避免使用它。 同样更改内容文本 utf8 => utf-16 不会更改编码(可能将 -Encoding UTF8 附加到 gc.