【问题标题】:Powershell to mass rename-move PDFs?Powershell批量重命名移动PDF?
【发布时间】:2014-05-09 20:12:50
【问题描述】:

我希望使用任务计划程序创建一个自动 Powershell 脚本,以对自动生成的 PDF 进行大规模重命名,然后将它们保存到第二个文件夹。原始名称无关紧要,但通常采用 0013238974.pdf 的形式。这些都需要根据文件中包含的文本进行重命名。示例:

TEXT TEXT TEXT 

$ACCT_ID

TEXT TEXT TEXT

因此,文件的新名称需要为 $ACCT_ID.pdf,然后保存在新目标中。搬家没问题,很简单

Get-ChildItem -Path C:\Original\PDF\Generation\Folder -Include *.pdf -Recurse |
copy-item -destination C:\The\Folder\I\Need\Them\In

但在那之后,我很难从已经生成的 PDF 中提取信息并将重命名的版本保存为 $ACCT_ID.pdf。

我考虑通过单独的 PDF 打印命令而不是打开/重新保存来运行它,但这并不能解决我的 $ACCT_ID 提取问题。

感谢您对此的任何见解。

【问题讨论】:

    标签: pdf powershell filenames


    【解决方案1】:

    在 PowerShell 中没有任何用于读取 PDF 文件的内置功能,因此最好的办法是使用第三方 .NET 组件。有几种商业替代品,至少还有一些免费的开源替代品。

    下面是几行示例代码,使用iTextSharp 阅读 PDF:

    Add-Type -Path .\itextsharp.dll
    $pdfReader = New-Object iTextSharp.text.pdf.PdfReader("C:\file.pdf")
    $textFromFirstPage = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($pdfReader, 1)
    $pdfReader.Dispose()
    

    当然,之后如何查找帐户 ID 取决于文件的文本。

    【讨论】:

    • 如果有其他方法可以解决这个问题,我并不特别需要 PowerShell。非常感谢您的回答。
    • 可能还有很多其他方法,尽管我认为所有人都会使用第三方库,无论语言/框架如何。但是,iTextSharp 库是免费和开源的,所以只需使用上面的 PowerShell 代码,它应该可以正常工作。
    猜你喜欢
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多