PowerShell-Programmierung: Ordner und Unterordner durchsuchen und pdftotext anwenden. E/A-Fehler

PowerShell-Programmierung: Ordner und Unterordner durchsuchen und pdftotext anwenden. E/A-Fehler

Ich habe den folgenden PowerShell-Befehl korrekt geschrieben, um alle Ordner und Unterordner eines Verzeichnisses zu durchlaufen und den Inhalt jedes dieser Ordner anzuzeigen:

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

Ich habe auch ein PowerShell-Skript geschrieben, das ordnungsgemäß funktioniert und Text aus jeder PDF-Datei in einem einzelnen Ordner extrahieren kann.

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"
}

Ich versuche, beide Skripte zu kombinieren, um alle Ordner und Unterordner zu durchsuchen und das Programm pdftotext auszuführen. Und so schrieb ich:

$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"
}

; was falsch ist. Ich erhalte die folgende Fehlermeldung:pdftotext.exe: E/A-Fehler: Datei konnte nicht geöffnet werden. Beachten Sie, dass keine der PDF-Dateien geschützt ist.

Frage: Wie behebe ich diesen Fehler?

Antwort1

Dies ist KEINE Antwort, sondern ein ausführlicher Kommentar nach @FrankThomas. Es scheint, dass das folgende Skript „funktioniert“

$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
}

Tatsächlich durchsucht es jeden Ordner und Unterordner und führt das Programm pdftotext aus und extrahiert so den Inhalt der PDF-Datei korrekt in eine Textdatei. Allerdings erhalte ich immer noch eine Fehlermeldung: pdftotext.exe: E/A-Fehler: Datei „C:\whiskey\Tango\Charlie“ konnte nicht geöffnet werden. Ich vermute, dass der Name jedes Ordners im Array $FOLDERS gespeichert wurde. Anschließend übergibt PowerShell den Namen des Ordners an pdftotext. Das Programm gibt einen Fehler aus, da es keine Erweiterung .pdf finden kann.


Das Folgende ist das richtige PS-Skript:

$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
}

Ich muss nur nach PDF-Dateien filtern.

verwandte Informationen