请求实现同工单编号子文件夹合并至Complete目录的自动化方案
自动化合并工单PDF文件并调用PDFTK合并的解决方案
这里有一个完整的PowerShell脚本方案,可以帮你自动完成文件归类到Complete目录的步骤,并且可以直接衔接你现有的PDFTK合并脚本,一次性完成所有操作:
完整脚本
# ---------------------- 第一步:自动合并文件到Complete目录 ---------------------- # 设置根目录(请根据你的实际路径修改这一行) $rootPath = "L:\OpenLocates\Current" # 定义各子目录路径 $coversPath = Join-Path $rootPath "Covers" $responsesPath = Join-Path $rootPath "Responses" $ticketsPath = Join-Path $rootPath "Tickets" $completePath = Join-Path $rootPath "Complete" # 获取所有唯一的工单编号(从Covers目录提取,确保每个工单都有对应封面) # 如果担心遗漏,也可以用注释里的代码合并三个目录的编号去重 $ticketNumbers = Get-ChildItem -Path $coversPath -Directory | Select-Object -ExpandProperty Name # $ticketNumbers = (Get-ChildItem -Path $coversPath,$responsesPath,$ticketsPath -Directory | Select-Object -ExpandProperty Name) | Get-Unique # 遍历每个工单编号,完成文件迁移 foreach ($ticketNum in $ticketNumbers) { # 构建目标文件夹路径 $targetDir = Join-Path $completePath $ticketNum # 如果目标文件夹不存在则自动创建 if (-not (Test-Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir | Out-Null Write-Host "已创建目标文件夹: $targetDir" } # 迁移封面文件 $sourceCoversDir = Join-Path $coversPath $ticketNum if (Test-Path $sourceCoversDir) { Get-ChildItem -Path $sourceCoversDir -Filter *.pdf | Move-Item -Destination $targetDir -Force Write-Host "已迁移封面文件到 $targetDir" } # 迁移回复文件 $sourceResponsesDir = Join-Path $responsesPath $ticketNum if (Test-Path $sourceResponsesDir) { Get-ChildItem -Path $sourceResponsesDir -Filter *.pdf | Move-Item -Destination $targetDir -Force Write-Host "已迁移回复文件到 $targetDir" } # 迁移工单文件 $sourceTicketsDir = Join-Path $ticketsPath $ticketNum if (Test-Path $sourceTicketsDir) { Get-ChildItem -Path $sourceTicketsDir -Filter *.pdf | Move-Item -Destination $targetDir -Force Write-Host "已迁移工单文件到 $targetDir" } Write-Host "✅ 工单编号 $ticketNum 的文件合并完成`n" } # ---------------------- 第二步:调用PDFTK合并PDF文件 ---------------------- $pdftk = "C:\SymLinks\Combine\pdftk.exe" $inputFolder = $completePath # 遍历Complete目录下的所有子文件夹,合并PDF Get-ChildItem $inputFolder -Recurse -Include *.pdf | Sort-Object | Group-Object DirectoryName | ForEach-Object { $outputFileName = "$(Split-Path $_.Name -Leaf).pdf" $outputPath = Join-Path (Split-Path $_.Name -Parent) $outputFileName & $pdftk $_.group CAT OUTPUT $outputPath verbose Write-Host "📄 已合并PDF文件: $outputPath" } Write-Host "`n🎉 所有操作已完成!"
脚本说明
- 路径配置:只需要修改开头的
$rootPath为你的实际Current文件夹路径即可,其他子目录路径会自动生成。 - 工单编号提取:默认从
Covers目录提取编号(因为每个工单对应一个封面),如果担心有遗漏,可以启用注释里的代码,合并三个目录的编号并去重。 - 文件迁移:使用
Move-Item实现和手动剪切粘贴一样的效果,如果需要保留原文件,只需把Move-Item替换为Copy-Item即可。 - PDF合并:直接整合了你提供的PDFTK调用脚本,并且优化了输出路径的构建逻辑,确保合并后的PDF文件保存在对应工单编号的父目录下(即
Complete目录下,以工单编号命名的PDF文件)。
使用方法
- 把上述脚本复制到文本编辑器中,修改
$rootPath为你的实际路径。 - 保存为
.ps1格式的文件,比如CompleteTicketWorkflow.ps1。 - 在PowerShell中运行该脚本即可完成全部流程。
内容的提问来源于stack exchange,提问作者AmandaKay10
相关产品推荐
相关产品推荐

