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 文件。

相关内容