PowerShell 프로그래밍: 폴더와 하위 폴더를 탐색하고 pdftotext를 적용합니다. I/O 오류

PowerShell 프로그래밍: 폴더와 하위 폴더를 탐색하고 pdftotext를 적용합니다. I/O 오류

디렉터리의 모든 폴더와 하위 폴더를 탐색하고 각 폴더의 내용을 표시하기 위해 다음 PowerShell 명령을 올바르게 작성했습니다.

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

또한 올바르게 작동하고 단일 폴더의 각 PDF 파일에서 텍스트를 추출할 수 있는 PowerShell 스크립트도 작성했습니다.

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: I/O 오류: 파일을 열 수 없습니다.. 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: I/O 오류: "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 파일만 필터링해야 합니다.

관련 정보