我需要替换文件中的所有<
,>
和"
。我正在使用以下内容,但失败了。
powershell.exe -Command (Get-Content C:\Users\dearo05\Documents\founders\annual_dividend_cov.xml) |
ForEach-Object {
$_ -replace '\<', '<' `
-replace '>', '>' `
-replace '\"', '>'
} | Set-Content c:\Users\dearo05\Documents\founders\annual_dividend_cov.xml
答案 0 :(得分:0)
这只是尝试将值传递到-Command
时的报价问题。
如果在PowerShell控制台中调用此命令,则将起作用。
Powershell.exe -Command "(Get-Content C:\Users\dearo05\Documents\founders\annual_dividend_cov.xml) -replace '\<','<' -replace '\>','>' -replace '\`"', '>' | Set-Content c:\Users\dearo05\Documents\founders\annual_dividend_cov.xml"
如果从CMD调用此命令,则将起作用:
Powershell.exe -Command "(Get-Content C:\Users\dearo05\Documents\founders\annual_dividend_cov.xml) -replace '\<','<' -replace '\>','>' -replace '\""', '>' | Set-Content c:\Users\dearo05\Documents\founders\annual_dividend_cov.xml"
传递给-Command
的值应该用双引号引起来。最简单的方法是在可能的情况下将值内的所有双引号都转换为单引号,然后将值内的双引号转义。如果从PowerShell会话调用,则需要反引号对内部双引号(`“)进行反击。如果从CMD.exe内部调用,则需要对双引号进行转义以使引号(”“)。