Выходные объекты
Select-String
- типа [Microsoft.PowerShell.Commands.MatchInfo]
- имеют свойство .Path
, которое отражает путь к входному файлу.
Добавление переключателя -List
к Select-String
останавливает поиск после первого совпадения в файле, поэтому вы получите ровно 1 выходной объект для каждого файла, в котором было найдено хотя бы 1 совпадение.
Следовательно, следующие выходные данные выводят только пути к входным файлам, в которых найдено хотя бы 1 совпадение:
Get-ChildItem $TargetPath |
Select-String -List -Pattern $ErrorCode | ForEach-Object Path
Примечание: -Pattern
поддерживает массив шаблонов регулярных выражений, поэтому, если вы определите свой параметр $ErrorCode
как [string[]]
, файлы с любым из шаблонов будут совпадать;используйте -SimpleMatch
вместо -Pattern
для поиска по буквенным подстрокам вместо.
Re:
в конечном итоге скопируйте файлы с ошибкой вдругая папка
Просто добавьте | Copy-Item -Destination $DestPath
к вышеприведенной команде.
Re:
Я хочу найти несколько файлов
В зависимости от ваших потребностей вы можете сделать $SourcePath
и $SourceFile
параметры массив -значным ([string[]]
) и / или передать подстановочные выражения какаргументы.