在 Windows Powershell 上计算多个 PDF 文件的总页数

在 Windows Powershell 上计算多个 PDF 文件的总页数

我正在尝试在 Windows 的 Powershell 上编写一个脚本,以便我可以知道同一目录中各个 pdf 文件的总页数。但是,我没有得到预期的结果。这是我的脚本:

$files = l .
$result = 0
for ($i=0; $i -lt $files.Count; $i++) 
{
    $fileName = $files[$i].FullName
    if ($fileName.EndsWith(".pdf"))
    {
         pdfinfo.exe $fileName | findstr.exe "Pages:*" | awk '{$result += $2} {print $result}'
    }
}

目前结果(个别页数):

20 
19 
10 
16 
18 
14 
9  
29 
24 
28 
16 
30 
32 
21 
13 
17

预期成绩:

20
39
49
65
83
...
...
...
316

或者只是最终值:

316

答案1

只是为了澄清pdfinfo这不是 Windows/PowerShell 附带的工具
Windows 和 Linux 版本可以从以下网址下载
https://www.xpdfreader.com/download.html

如果使用 PowerShell,我会尽可能地使用它:

## Q:\Test\2019\06\07\SO_1446208.ps1

$folder = 'C:\Test'
$Total = $Files = 0

foreach($File in (Get-ChildItem -Path $Folder -Filter *.pdf)){
    $Pages = (pdfinfo $File.FullName | Select-String -Pattern '(?<=Pages:\s*)\d+').Matches.Value
    $Total += $Pages
    $Files++
    [PSCustomObject]@{
        PdfFile = $File.Name
        Pages   = $Pages
    }
}
"`nTotalNumber of pages: {0} in {1} files" -f $Total,$Files

示例输出(全部[PSCustomObject]仅供参考)

> Q:\Test\2019\06\07\SO_1446208.ps1

PdfFile                      Pages
-------                      -----
2014-02-25_Allwinner A80.pdf 1
test.pdf                     4

TotalNumber of pages: 5 in 2 files

相关内容