디렉터리의 모든 폴더와 하위 폴더를 탐색하고 각 폴더의 내용을 표시하기 위해 다음 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 파일만 필터링해야 합니다.