2013-11-21 49 views
0

我重命名一個目錄中的所有文件,並做了內容替換來拯救他們,並將其保存爲新文件PowerShell的新項目只保存最後一行到文件

爲什麼當我回聲的價值$ newText顯示所有的文本,但是當我將同一個變量傳遞給新項目時,我只能得到最後一行?

例子......在當前目錄中我有一個3行文本名爲TemplateClient_.TemplateProject_.txt文件中它

TemplateClient_/TemplateProject_ 
test text 
end 
當我運行它創建的文件 Aaaa.Bbbb.txt PowerShell腳本,但它只有一條線

,最後一行。它只是說end

$text = get-content $file.fullname 
    $newText = $text -creplace $currentClient,$newClient 
    $newText = $newText -creplace $currentProject,$newProject 

    echo $newText 
    $newFileLoc = $file.fullname.replace($currentClient, $newClient).replace($currentProject, $newProject) 
    $newText | new-item -force -path $newFileLoc -type "file" 

解決方案:

$currentClient = "TemplateClient_" 
$currentProject = "TemplateProject_" 
$newClient = "Aaaa" 
$newProject = "Bbbb" 

$files = Get-ChildItem $(get-location) -include *.txt -Recurse 

foreach($file in $files) 
{ 
    $fileText = get-content $file.fullname 
    $fileText = $fileText -creplace $currentClient,$newClient 
    $fileText = $fileText -creplace $currentProject,$newProject 

    $newFileLoc = $file.fullname.replace($currentClient, $newClient).replace($currentProject, $newProject) 
    new-item -force -path $newFileLoc -type "file" 
    Set-Content $fileText -Path $newFileLoc 
} 

回答

2

怎麼樣

Set-Content $newText -Path $newFileLoc 

$newText | Set-Content $newFileLoc 
+0

很好,這個工程。但是我確實需要添加new-item -force -path $ newFileLoc -type「file」,以便該文件將在那裏。否則,Set-Content將拋出一個錯誤,它無法找到該文件。謝謝:) – eiu165

+1

我使用ps v3,set-content會創建文件(如果不存在)。也許某些權限問題會導致遇到的「文件不存在錯誤」。 [設置內容](http://technet.microsoft.com/en-us/library/hh849828.aspx)說:「如果該文件不存在,該命令將創建它。」在示例2中。 – Jackie

+0

我剛剛將我的PowerShell更新至v3。它給了我「集合內容:找不到路徑的一部分」。但是有不存在的目錄。應該設置內容創建目錄? – eiu165

相關問題