"検索と置換"機能は、意図したとおりに行うのではなく、ファイルの内容を削除します。
詳細
私は正規表現の値を使用してPowerShellで作業し、特定の正規表現文字列を検索し、別のと交換するために設計された機能を持っています。当初、関数は正常に機能しました。ただし、ターゲットファイルの内容をすべて削除し、空のファイルとして保存しています。私は何が間違っているかを理解するために数時間試みました。残念ながら、意図したとおりに動作していたときに関数のコピーを保存しなかったため、比較することは何もなく、ほとんどのトラブルシューティングに失敗しました。もう一組の目が問題を見つけ出すのを助けてくれることを願っています。
コード:私のトラブルの多くの中に
Function StringReplace
{
$files = GCI -path "$path\*.config" -Recurse | where-object -InputObject $_ -Pattern ([regex]::Escape($oldString)) -Quiet) -eq $true)
foreach ($file in $files) {
(GC $file.PSPath) |
foreach-object { $_.Replace($oldString, $newString) |
set-content $file.PSPath
}
}
$oldString = "s+r/ng"
$newString = "s/R+ng"
$path = "C:\*\somefoldername"
、私が意図したとおり、すべての$の値があることがわかりました。ただし、Get-Contentに到達すると何かが起き、$ fileの値が複製され、格納されている各ファイル/コンテンツの約20のコピーが存在します。私はそれが何であるか分かりませんが、私は間違っていますが、私はすべての入力を高く評価します。
ありがとうございました
実際に手動で文字列を1つずつパイプしたい場合は、 'Set-Content'の代わりに' Add-Content'または 'Out-File -Append'を使用できます –