Powershell получает файлы, которые отвечают определенным условиям - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь написать сценарий PowerShell, который будет извлекать файл, если он содержит строку «строка 1», а не содержит строку «2».Я написал следующий скрипт, однако он извлекает файлы, содержащие обе эти строки.

get-childitem  -recurse -file  D:\Folder | 
where { 
Get-Content $_.FullName | Where-Object { $_ -match "string 1" -and  $_-notmatch "string 2"}
}

Как мне получить файлы, соответствующие этому условию?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

1-е решение (путем изменения вашего кода):

(Get-ChildItem "D:\Folder\*.*") |  Where-Object {(Get-Content $_.FullName) -match "string 1" -and  (Get-Content $_.FullName) -notmatch "string 2" } | select FullName

2-е решение (с использованием строки выбора):

(Get-ChildItem "D:\Folder\*.*") | Where-Object {(Select-String -Path $_.FullName -Pattern "string 1") -and -not(Select-String -Path $_.FullName -Pattern "string 2") }| select FullName
0 голосов
/ 15 ноября 2018

Вам нужно будет сделать второе сравнение со всем файлом за один раз.Я бы использовал Select-String:

Get-ChildItem -Recurse -File -Path D:\Folder | Where-Object { 
    (Select-String -Path $_.FullName "string1") -and -not(Select-String -Path $_.FullName "string2")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...