2012-12-08 55 views
3

我有這個問題,我必須在所有文本文件中用它的父文件夾的名稱替換字符串「121212」(例如,如果父文件夾是命名爲「123456」不是字符串「121212」應爲「123456」)取代找到文本文件中的字符串並將其替換爲父文件夾的名稱

我想我想通了如何使用以下命令做到這一點:

PS E:\testenvironment> $parent=get-childitem -recurse | where {$_.FullName -match "[testenvironment]\\\d{6}$"} | foreach {$_.Name} 
PS E:\testenvironment> $parent 
123456 
456789 
654321 
987654 
PS E:\testenvironment> $files=get-childitem -recurse | where {$_.FullName -match "\\\d{6,6}\\AS400\\test3.txt$"} | foreach {$_.FullName} 
PS E:\testenvironment> $files 
E:\testenvironment\123456\AS400\test3.txt 
E:\testenvironment\456789\as400\test3.txt 
E:\testenvironment\654321\AS400\test3.txt 
E:\testenvironment\987654\AS400\test3.txt 
PS E:\testenvironment> foreach ($file in ($files)) {Get-Content "$file" | foreach-Object {$_ -replace "121212", "($name in ($parent))"} | set-content "$file"} 

但我得到這個消息:

Set-Content : The process cannot access the file 'E:\testenvironment\123456\AS400\test3.txt' **because it is being used by another process**. 
At line:1 char:127 
+ foreach ($file in ($files)) {Get-Content "$file" | foreach-Object {$_ -replace "121212", "($name in ($parent))"} | set-content <<<< "$file"} 
    + CategoryInfo   : NotSpecified: (:) [Set-Content], IOException 
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.SetContentCommand 

(...我收到這對每個test3.txt文件ofcourse ...)

我無法弄清楚如何獲得「當前內存」到一個新的變量,因此,該文件(這將是目前在內存)可以被新數據覆蓋。

回答

0

提供的所有文本文件都在目錄結構已經發布,下面將完成這項工作:

get-childitem $testEnvPath -recurse -filter "*.txt" | foreach{ 
    $content = Get-Content $_.fullname 
    #To get the file's grandparent directory name ($_.fullname -split '\\')[-3] 
    $content -replace "121212", ($_.fullname -split '\\')[-3] | 
    set-content $_.fullname 
} 

注意,要「搬家」到下一個文件/目錄在內存中,這些項目的枚舉必須在foreach語句中,而您在外面枚舉它們。

希望有所幫助。

+0

您好,非常感謝,確實有效。 我仍然在忙於學習Powershell(大約2個月前開始),許多事情對我來說仍然是陌生而新的。 非常感謝您幫助我解決我的問題:-) – silver

+0

不客氣,這是一個很好的問題,非常好,您發佈了您曾嘗試+1的內容。你可能會發現一些*答案*發佈[這裏](http://stackoverflow.com/questions/9956109/looking-for-quick-and-complete-powershell-tutorial)和[這裏](http:// stackoverflow .com/questions/496234/what-tutorial-do-you-recommend-for-learning-powershell)有趣和/或有用,如果你還沒有找到它們的話! :) – nimizen

相關問題