我正在尝试在 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