【发布时间】:2017-07-31 12:41:24
【问题描述】:
问题
“查找和替换”功能正在删除文件的内容,而不是按预期进行。
详情
我正在使用正则表达式值在 PowerShell 中工作,并且具有旨在查找特定正则表达式字符串并将其替换为另一个的函数。最初,该功能运行良好;但是,现在它正在删除目标文件的所有内容并将它们保存为空文件。我已经尝试了几个小时来找出问题所在。不幸的是,当它按预期工作时,我没有保存该函数的副本,所以我没有什么可比较的,而且我的大部分故障排除都失败了。我希望另一双眼睛可以帮助发现问题。
代码:
Function StringReplace
{
$files = GCI -path "$path\*.config" -Recurse | where-object -InputObject $_ -Pattern ([regex]::Escape($oldString)) -Quiet) -eq $true)
foreach ($file in $files) {
(GC $file.PSPath) |
foreach-object { $_.Replace($oldString, $newString) |
set-content $file.PSPath
}
}
$oldString = "s+r/ng"
$newString = "s/R+ng"
$path = "C:\*\somefoldername"
在我的大部分故障排除过程中,我发现所有 $values 都符合预期;但是,在到达 Get-Content 时,会发生一些事情并且 $file 值被复制,因此每个文件/内容大约存储了 20 个副本。我不确定我做错了什么,但我将不胜感激。
提前谢谢大家
【问题讨论】:
标签: regex powershell str-replace