查找和替换文件失败

时间:2012-05-07 10:44:43

标签: powershell powershell-v2.0

我正在尝试使用以下方法在文件中查找和替换。

Function Find-Replace ($FileFullpath, $FindString, $ReplacementString) {

   Get-Content $FileFullpath | 
   Foreach-Object {$_ -replace $FindString, $ReplacementString } |  
   Set-Content $FileFullpath

}

Find-Replace "c:\program files (x86)\MyProj\web.config" $OldServiceName $NewServiceName

但我总是收到错误。

  

Set-Content:进程无法访问文件'c:\ program files   (x86)\ MyProj \ web.config'因为它正被另一个进程使用。

文件未在任何地方打开。我认为Get-content尚未发布文件。

为什么会这样?如何在没有问题的情况下在同一个文件中查找和替换?

1 个答案:

答案 0 :(得分:49)

在打开时,您无法读取和写入同一文件,Get-Content会打开文件进行读取,同时Set-Content会尝试写入该文件。将Get-Conetnt调用放在括号中,它将打开文件,读取它的内容并关闭它。

(Get-Content $FileFullpath) | ...