トッカンソフトウェア

PowerShell Grepして置換



Grepして置換するサンプルを作ってみました。

Grepして置換

$basePathに対象フォルダ、$fromに変更元文字、$toに変更先文字を指定します。
ファイルの文字コードはUTF8を指定しています。
.txtファイルのみを対象としています。
				
$basePath = "C:\work\powershell"
$from = "変更元"
$to = "変更先"

$listA = Get-ChildItem $basePath -Filter *.txt -Recurse | Select-String $from

$ary = @()
$UTF8 = New-Object System.Text.UTF8Encoding $False

foreach ($obj in $listA) {

    if ($ary.Contains($obj.Path) -eq $False) {
        $ary += ($obj.Path)
    }
}

foreach ($path in $ary) {
    Write-Output $path

    $data = Get-Content $path -Encoding UTF8
    $data = $data | ForEach-Object { $_ -replace $from, $to }
    [System.IO.File]::WriteAllLines( $path, $data, $UTF8)
}

			


ページのトップへ戻る