我正在尝试更新HTM文件中的徽标,我们有两个路径需要更换
紧随其后的是工作正常并被取代的产品。
原始字符串
<img src=C:\ProductName\ProductNameClient\webapps\ProductNameClient\assets\img\logo\logo.jpg alt='ProductName Logo'>
由于转义序列问题而更新,我们正在使用PowerShell中的以下字符串来搜索原始字符串
<img src=C:\\ProductName\\ProductNameClient\\webapps\\ProductNameClient\\assets\\img\\logo\\logo.jpg alt='ProductName Logo'>
替换字符串
<img src=../../ProductNameNew/ProductNameNewLogo.png alt='ProductNameNew Logo'>
PowerShell脚本对此字符串工作正常
Get-ChildItem -Path (Get-Item .).FullName -Recurse -File *.htm | ForEach-Object {
$content = Get-Content -Path $_.FullName
if($content -match "<img src=C:\\ProductName\\ProductNameClient\\webapps\\ProductNameClient\\assets\\img\\logo\\logo.jpg alt='ProductName Logo'>"){
$content -replace "<img src=C:\\ProductName\\ProductNameClient\\webapps\\ProductNameClient\\assets\\img\\logo\\logo.jpg alt='ProductName Logo'>","<img src=../../ProductNameNew/ProductNameNewLogo.png alt='ProductNameNew Logo'>" | Set-Content -Path $_.FullName
}}
我使用了相同的PowerShell脚本并更新了转义序列的字符串
不使用此字符串原始字符串
<img src=C:\Program%20Files%20(x86)\ProductName\.\ProductNameConfigs\ProductNameOLDlogo.png alt='ProductName Logo'>
更新到期转义序列问题
<img src=C:\\Program%20Files%20(x86)\\ProductName\\.\\ProductNameConfigs\\ProductNameOLDlogo.png alt='ProductName Logo'>
替换字符串
<img src=../../../ProductNameNew/ProductNameNewLogo.png alt='ProductNameNew Logo'>
我使用了对上一次更新有效的转义序列,但现在它不起作用了,我在PowerShell中没有收到任何错误来解决这个问题,脚本将执行,字符串将保持不变,PowerShell中没有错误
Get-ChildItem -Path (Get-Item .).FullName -Recurse -File *.htm | ForEach-Object {
$content = Get-Content -Path $_.FullName
if($content -match "<img src=C:\\Program%20Files%20(x86)\\ProductName\\.\\ProductNameConfigs\\ProductNameOLDlogo.png alt='ProductName Logo'>"){
$content -replace "<img src=C:\\Program%20Files%20(x86)\\ProductName\\.\\ProductNameConfigs\\ProductNameOLDlogo.png alt='ProductName Logo'>","<img src=../../../ProductNameNew/ProductNameNewLogo.png alt='ProductNameNew Logo'>" | Set-Content -Path $_.FullName
}}
当我运行并检查它没有更新时,有人能给我提供一些输入吗
1条答案
按热度按时间rta7y2nd1#
除了反斜杠之外,还有更多的字符需要转义,比如圆括号和圆点。对于要在
-match
Regular Expression中用作文字模式的“原始字符串”,这意味着:因此:
无论如何,它通常是a bad idea to attempt to parse HTML with regular expressions。
相反,您可以考虑使用专用的HTML解析器作为HtmlDocumentclass: