【问题标题】:Batch file + cPDF to find number of pages in multiple PDFs批处理文件 + cPDF 查找多个 PDF 中的页数
【发布时间】:2017-04-12 19:09:27
【问题描述】:

我正在尝试自动执行一项非常具体的任务:检查一个装满 PDF 的文件夹是否有奇数页。每个 PDF 都是文档的一个部分,我希望每个部分都从正确的页面开始。

我选择了 cPDF 作为一个简单的 PDF 命令行工具,并编写了以下命令行:

for %f in (*.pdf) do cpdf -pages %f"

这完成了今天的任务:我可以在命令行窗口中查看输出,查看哪些文件的页数为奇数。但我是办公室里唯一一个会使用它的人,除非我可以让它成为一个双击过程,然后显示一个更简单/易读的输出。所以我想我会写一个批处理文件:

for %%f in (*.pdf) do cpdf -pages %%f >> ".\pages.txt"

是我的第一次尝试,但它只在一个连续的行上写了页数,所以我无法读取哪个文件有多少页。

如何将文件名添加到输出中并使每个结果位于单独的行中?甚至更好

Number of pages:
fileA.pdf 6
fileB.pdf 8
fileC.pdf 7
fileC.pdf 10
fileD.pdf 13
fileE.pdf 2

【问题讨论】:

    标签: windows batch-file pdf cmd


    【解决方案1】:

    这批应该只输出奇数页码的文件:

    @Echo off
    SetLocal EnableDelayedExpansion
    (Echo Number of pages:
     for %%f in (*.pdf) do For /F "delims=" %%p in ('cpdf -pages %%f') Do (
       Set /A rest=%%p %% 2
       If !rest! equ 1 Echo %%f %%p 
    ))> ".\pages.txt"
    

    编辑插入缺失的)
    使用免费版本的 cPDF,您需要将 for 命令更改为:

    for %%f in (*.pdf) do For /F "skip=1 delims=" %%p in ('cpdf -pages %%f') Do (
    

    跳过此示例输出:

    > cpdf -pages .\cpdfmanual.pdf
    This demo is for evaluation only. http://www.coherentpdf.com/
    70
    

    Edit2 根据this answer pdftk 是真正的免费替代品:

    @Echo off
    SetLocal EnableDelayedExpansion
    (Echo Number of pages:
     for %%f in (*.pdf) do For /F "tokens=2 delims=: " %%p in (
       'pdftk %%f dump_data ^| findstr "NumberOfPages" '
     ) Do (
       Set /A rest=%%p %% 2
       If !rest! equ 1 Echo %%f %%p 
    ))> ".\pages.txt"
    

    【讨论】:

    • LotPings,感谢您的批次。当我运行它时,它不会创建“pages.txt”。 cmd 窗口会暂时弹出,但随后会关闭。我只是将您的代码复制粘贴到一个文本文件中并将其重命名为“test.bat”。
    • 感谢您的反馈,缺少右括号。上面改了。您使用免费版的 cPDF 吗?然后你需要在delims=前面插入一个skip=1
    猜你喜欢
    • 1970-01-01
    • 2013-09-08
    • 2010-12-12
    • 2010-10-16
    • 2012-12-18
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多