Программирование PowerShell: обход папок и подпапок и применение pdftotext. Ошибка ввода-вывода

Программирование PowerShell: обход папок и подпапок и применение pdftotext. Ошибка ввода-вывода

Я правильно написал следующую команду PowerShell для обхода каждой папки и подпапки каталога и отображения содержимого каждой такой папки:

Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse

Я также написал скрипт PowerShell, который работает корректно и может извлекать текст из каждого PDF-файла в одной папке.

cd "C:\whiskey"
$FILES= ls *.pdf
foreach ($f in $FILES) {
  & "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 "$f"
}

Я пытаюсь объединить оба скрипта, чтобы обойти все папки и подпапки и выполнить программу pdftotext. И поэтому я написал:

$files=Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse
foreach ($f in $files){
    & "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 "$f"
}

; что неверно. Я получаю следующую ошибку:pdftotext.exe : Ошибка ввода-вывода: Не удалось открыть файл. Обратите внимание, что ни один из файлов PDF не защищен.

Вопрос: Как исправить эту ошибку?

решение1

Это НЕ ответ, а расширенный комментарий после @FrankThomas. Похоже, следующий скрипт "работает"

$FOLDERS=@(Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse)
$FOLDERS #print contents of array
foreach ($f in $FOLDERS) {
  & "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 $f.FullName
}

Действительно, он проходит через каждую папку и подпапку и запускает программу pdftotext и таким образом правильно извлекает содержимое файла pdf в текстовый файл. Однако у меня все еще есть сообщение об ошибке: pdftotext.exe : Ошибка ввода-вывода: Не удалось открыть файл "C:\whiskey\Tango\Charlie". Я подозреваю, что имя каждой папки было сохранено в массиве $FOLDERS. Впоследствии PowerShell передает имя папки в pdftotext; что приведет к ошибке, так как не может найти расширение .pdf.


Ниже приведен правильный сценарий PS:

$FOLDERS=@(Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse -Filter *.pdf)
$FOLDERS #print contents of every folder
foreach ($f in $FOLDERS) {
  & "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 $f.FullName
}

Мне нужно отфильтровать только файлы PDF.

Связанный контент