Powershell, using contains to check if files contain a certain word

后端 未结 3 1247
醉话见心
醉话见心 2021-01-12 12:44

I am trying to create a powershell script which looks through all files and folders under a given directory it then changes all instances of a given word in .properties file

3条回答
  •  时光取名叫无心
    2021-01-12 12:55

    Try this:

    $directoryToTarget=$args[0]
    $wordToFind=$args[1]
    $wordToReplace=$args[2]
    
    Clear-Content log.txt
    
    Get-ChildItem -Path $directoryToTarget -Filter *.properties -Recurse | where { !$_.PSIsContainer } | % { 
    
    $file = Get-Content $_.FullName
    $containsWord = $file | %{$_ -match $wordToFind}
    If($containsWord -contains $true)
    {
        Add-Content log.txt $_.FullName
        ($file) | ForEach-Object { $_ -replace $wordToFind , $wordToReplace } | 
         Set-Content $_.FullName
    }
    
    }
    

    This will put the content of the file into an array $file then check each line for the word. Each lines result ($true/$false) is put into an array $containsWord. The array is then check to see if the word was found ($True variable present); if so then the if loop is run.

提交回复
热议问题