我们编写了一个脚本来循环遍历所有文件并删除某个字符串。该字符串不包含特殊字符,脚本会删除该字符串并将其替换为空字符串,就像我们一样...
我们编写了一个脚本来循环遍历所有文件并删除某个字符串。该字符串不包含特殊字符,脚本确实会删除该字符串并将其替换为我们所希望的空字符串。但是,文件中有一些特殊字符。脚本不会只删除我们指定的字符串并保留文件中的所有其他内容,而是用问号 \'?\' 替换这些特殊字符。我们尝试了 PowerShell -replace 和 .Replace 函数,效果相同。两者都用 \'?\' 替换此特殊字符
这是我们运行的脚本:
$packageFiles = Get-ChildItem -Path E:\SSIS\Projects -Recurse -Include *.dtsx
foreach ($file in $packageFiles)
{
(Get-Content $file.PSPath) |
Foreach-Object { $_.Replace('somestring','')} |
Set-Content $file.PSPath
}
这是之前文件中带有特殊字符的行的样子:
之后:
之前有一个不间断空格字节顺序标记特殊字符“ZWNBSP”。之后用问号“?”替换了该特殊字符。
是否有人有解决方案,可以让我们仍然使用 PowerShell 的替换功能之一,但不会将特殊字符替换为问号,从而破坏我们的文件?