我有一个包含 PDF 文件的文件夹(C:\1_PDF
)。文件名有两种类型,330526.pdf
和000526.pdf
。这些文件名会发生变化(数字增加)330527.pdf
、330528.pdf
、330529.pdf
。该系列也是如此000526.pdf
。
现在,我希望代码遍历文件夹中的文件并合并文件名最后四位数字相同的所有文件 ( xx**0526**.pdf
)。这些文件对的数量可以是 1 个,也可以是 200 个。
合并本身不是问题,这是我解决问题的方法:
pdftk A=330526.pdf B=000526.pdf shuffle A B output RG-330526.pdf
但循环让我很头疼。我该怎么做?
我尝试了 Google 上能找到的几乎所有方法,但仍然没有解决方案。希望我能在这里得到一些帮助。
答案1
我的 powershell 生疏了,但我可以帮助你实现目标。
首先,我们可以使用 powershell 的 Get-ChildItem 创建“第一”页列表,如下所示
$firstPageList = Get-ChildItem C:\1_PDF\e0* -File -Name
接下来,我们遍历列表中的每个名字
ForEach ($firstPage in $firstPageList) {
让我们找到它的配对,第二页
$secondPage = "330" + $firstPage.substring(4)
为输出创建名称
$output = "RG-$secondPage"
最后执行你的命令
iex "pdftk A=$firstPage B=$secondPage shuffle A B output $output"
为了测试目的,您可以用 Write-Host 替换 iex 以获得将调用的命令的视觉输出。
并结束 for 循环
}
按照现在的写法,您必须从 C:\1_PDF 运行它。
我希望这有帮助。
答案2
不起作用,我尝试了不同的方法,但没有机会让它起作用。
这是代码:
$firstPageList = Get-ChildItem C:\Users\Test\Desktop\PDF_Temp\3* -File -Name
ForEach($firstPageList 中的 firstPage){
$secondPage = “e0” + $firstPage.子字符串(2)
$输出=“RG-$firstPage”
#Invoke-Expression pdftk A=$firstPage B=$secondPage 随机播放 AB 输出 $output Write-Host pdftk A=$firstPage B=$secondPage 随机播放 AB 输出 $output
}
这是我收到的错误:
Write-Host 对我来说看起来不错:
答案3
明白了!效果很好:
$firstPageList = Get-ChildItem C:\Users\Test\Desktop\PDF_Temp\3* -File -Name
ForEach ($firstPage in $firstPageList)
{
$secondPage = "e0" + $firstPage.substring(2)
$output = "RG-$firstPage"
Invoke-Command {pdftk A=$firstPage B=$secondPage shuffle A B output $output}}
get-childitem -Recurse -path "C:\Users\Test\Desktop\PDF_Temp\" -filter '3*.pdf' | move-item -Destination "D:\Bank\QR_ES\2_versendet"
get-childitem -Recurse -path "C:\Users\Test\Desktop\PDF_Temp\" -filter 'e*.pdf' | move-item -Destination "D:\Bank\QR_ES\2_versendet"
非常感谢 Silbee!