我目前正在开发一个自动设置程序。它必须执行SQL命令。我决定用一个简单的批处理文件创建它,该文件允许我使用sqlcmd或Powershell之类的命令。
我正在处理一个XML文件,该文件将插入到另一个文件中。首先,我必须替换其中的一些字符串。我成功地使用了-replace这样的命令:
powershell -Command "(gc source_file.xml) -replace 'utf-8', 'utf-16' | sc updated_file.xml"
现在,updated_file.xml仍包含单引号,我想用''代替(两个单引号)。我想再次使用replace命令进行替换。我试图转义单引号字符,但没有用:
powershell -Command "(gc source_file.xml) -replace "`'", "`'`'" | sc updated_file.xml"
该错误表明单引号没有转义。而且,就我而言,replace命令似乎只读取单引号之间的字符串。我也尝试过使用regex :: Escape(“`”“)失败。
你有什么主意吗?
非常感谢!
答案 0 :(得分:2)
尝试一下:
powershell -Command "(gc source_file.xml) -replace 'utf-8', 'utf-16' -replace '''', '''''' | sc updated_file.xml"
答案 1 :(得分:1)
对于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。