更新日:2019/09/27
#再帰的に検索するフォルダ
$path = "c:\testdir\"
#検索する"含まれない"文字列
$notfind_str = "ABCXYZ"
#置換対象文字列
$from_str = "STRING_FROM"
#置換後の文字列
$to_str = "STRING_TO"
Get-Childitem -Path $Path -Recurse -Include *.html | ?{
Select-String -InputObject (Get-Content ($_.FullName )) -Pattern $notfind_str -NotMatch
} | %{
write-host $_.FullName
$file = $_
$content = Get-Content ($_.FullName)
if( [ string]::IsNullorEmpty($content))
{
write-host "error"
}
#使用するときは以下コメントを除去してください。ファイルの内容を書き換えるので十分注意してください。
#Set-Content -Encoding String $_.FullName ($content -replace $from_str, $to_str)
}
Linux 系コマンドで実現する
gow や cygwin のlinux互換コマンドで実現することが可能です。以下はサンプルです。
grep -L viewport -R c:\\testdir --include=*.html | C:\Gow\bin\xargs c:\cygwin\bin\sed -i 's/STRING_FROM/STRING_TO/g'
(*)gow のsed ではsedxxxxxのような一時ファイルが残ってしまいました。-i オプションで一時ファイルを生成しますが、なぜかこのファイルが削除されずに残存するようです。cygwinのsedではこの問題は発生しませんでした。
[Powershell FAQ トップへ]
[FAQ CENTER トップ]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018