0
私はpowershellを使って再帰的な検索と置換を完了し、フォルダとサブフォルダのすべてのファイルの置き換えを完了するフォルダを置き換えています。見つけられ置き換えられたおよそ1500の異なる値があります。Powershell再帰的な検索と置換スクリプト
現在のコードは少数のファイルで動作しますが、サーバー(16GB RAM)のすべてのメモリを使用してpowershellをクラッシュさせる4GBのフォルダでこれを実行する必要があります。
以下のコードはあまり効率的ではないので、誰でも上記の作業をより効率的に行う方法を知っています。そうでなければ、私はこのタスクを達成するために使用できる別のプログラミング言語を知っています。私はWindows 2012サーバーを使用することを念頭に置いてください。
$folderLocation = 'D:\folder\location'
####
$files = Get-ChildItem $folderLocation * -rec
foreach ($file in $files){
write-host "Checking File " + $file.FullName
(get-content $file.PSPath)|
Foreach-Object {
$_ -replace "find","replace0" `
-replace "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)","scrubbed_ip" `
-replace "name0","FILLER0" `
-replace "name1","FILLER1" `
-replace "name2","FILLER2" `
-replace "name3","FILLER3" `
-replace "name4","FILLER4" `
-replace "name5","FILLER5" `
.
.
.
.
-replace "name1500","FILLER1500" `
}|
set-content $file.PSPath
}
おかげMjolinor、このコードが実行されるが、PowerShellはエラーで死ぬ:プロセスが原因StackOverflowExecptionに終了されます。 また、以下のコードでは、name01/02/03が例として繰り返されているだけで、名前は何でもかまいません。フィラーは常に繰り返します。 -replace 'name(\ d +)'、 'FILLER $ 1' – CassOwary
出力ファイルに何かが亡くなりましたか? – mjolinor
ええ、それは期待通りに動いていました...それぞれの検索と置換を実行しています。ファイルの出力は期待どおりです。 PowerShellの画面とイベントビューアはあまり役に立ちませんが、StackOverflowExecptionのためにプロセスが終了してしまいます。 – CassOwary