Вот что я пытаюсь сделать:
У меня огромный беспорядок файлов (около десяти тысяч) различных форматов. Каждый файл может быть определен как определенный тип (например: лист продукта, бизнес-план, предложение, презентация и т.д.). Файлы расположены не в определенном порядке и могут рассматриваться как единый список. Я заинтересован в создании каталога по типу.
Идея заключается в том, что для определенного формата и определенного типа я знаю, какие ключевые слова нужно искать в содержимом файла. Я хотел бы иметь сценарий powershell, который в основном выполняет серию сценариев, ищущих все файлы определенного формата, содержащие определенные ключевые слова, и выводит каждый список в отдельный файл CSV. Ключевым моментом здесь является то, что ключевое слово будет в содержании (тело PDF, ячейка Excel и т.д.), А не в имени файла. На данный момент я пробовал следующее:
get-childitem -Recurse | where {!$_.PSIsContainer} |
select-object FullName, LastWriteTime, Length, Extension | export-csv -notypeinformation -delimiter '|' -path C:\Users\Uzer\Documents\file.csv -encoding default
Это приятно и дает мне полный список файлов, включая их размер и расширение. Я ищу что-то похожее, но фильтрую по содержанию. Есть идеи?
Изменить: на основе решения ниже ее новый код:
$searchstring = "foo"
$directory = Get-ChildItem -include ('*.pdf') -Path "C:\Users\Uzer\Searchfolder" -Recurse
foreach ($obj in $directory)
{Get-Content $obj.fullname | Where-Object {$_.Contains($searchstring)}| select-object FullName, LastWriteTime, Length, Extension | export-csv -notypeinformation -delimiter '|' -path C:\Users\Uzer\Documents\file2.csv -encoding default}
Однако я получаю кучу этих ошибок:
An object at the specified path C:[blabla]\filename.pdf does not exist, or has been filtered by the -Include or -Exclude parameter.