[英]Powershell replace special characters string in all files in directory path
我正在嘗試為我們公司剛收購的網站創建一個“查找和替換”腳本。 現在,我只是想用它來替換我們的地址和電話號碼,但我可能需要在將來定制它來替換或更新其他東西。
到目前為止,我得到的是:
(Get-Content C:\Scripts\Test.txt) |
Foreach-Object {$_ -replace "\*", "@"} |
Set-Content C:\Scripts\Test.txt
我從The Scripting Guy那里得到的 :P
但是,我需要幫助定制它。 我需要它做的是:
這是我要替換的確切字符串(因為它出現在.php中):
<p>©Copyright 2012 GSS | 48009 Fremont Blvd., Fremont, CA 94538 USA</p>
由於這可能是我的powershell工具箱中的第一個工具,任何解釋你正在添加或更改的內容都將極大地幫助我理解正在發生的事情。
獎勵積分:
我的建議是使用ForEach循環。 在這種情況下我沒有看到需要一個函數,只需要在ForEach循環中使用代碼。 我會定義一個要搜索的字符串,以及一個要替換的字符串。 執行替換時,請確保它已被轉義。 這些方面的東西:
$TxtToFind = "<p>©Copyright 2012 GSS | 48009 Fremont Blvd., Fremont, CA 94538 USA</p>"
$UpdatedTxt = "<p>©Copyright 2014 | 1234 Somenew St., Houston, TX 77045 USA</p>"
$Logfile = "C:\Temp\FileUpdate.log"
ForEach($File in (GCI C:\WebRoot\ -Recurse)){
If($File|Select-String $TxtToFind -SimpleMatch -Quiet){
"Updating lines in $($File.FullName)" |Out-File $Logfile -append
$File|Select-String $TxtToFind -SimpleMatch -AllMatches|Select -ExpandProperty LineNumber -Unique|Out-File $Logfile -append
(GC $File.FullName) | %{$_ -replace [RegEx]::Escape($TxtToFind),$UpdatedTxt} | Set-Content $File.Fullname
}
}
您可以利用正則表達式來查找/替換您想要的字符串,以下腳本將以遞歸方式迭代所提供文件夾中的所有php文件。
function ParseFile($file){
#Add logic to parse the file
Write-Host $file.FullName
}
$files = Get-ChildItem -recurse C:\Path -Filter *.php
foreach ($file in $files) {
ParseFile $file
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.