使用批处理 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.
我目前正在开发自动安装程序。它必须执行 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.