PowerShell配合PDFtk合并子文件夹PDF后删除原文件的问题咨询
修改后可自动删除原PDF的PowerShell脚本
$pdftk = "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" $RootFolder = "替换为你的根目录实际路径" Set-Location $RootFolder Get-ChildItem -Recurse -Include *.pdf | Group-Object DirectoryName | ForEach-Object { $currentDir = $_.Name $sourcePdfs = $_.Group $mergedName = "$(Split-Path $currentDir -Leaf)_merged.pdf" # 合并文件生成在子文件夹同级的上级目录,和你原有逻辑一致 $mergedFullPath = Join-Path -Path (Split-Path $currentDir -Parent) -ChildPath $mergedName # 如果要把合并文件生成在对应子文件夹内,改用下面这行注释的代码 # $mergedFullPath = Join-Path -Path $currentDir -ChildPath $mergedName & $pdftk $sourcePdfs.FullName CAT OUTPUT $mergedFullPath # 仅合并成功时删除原PDF,避免文件丢失 if ($LASTEXITCODE -eq 0) { Write-Host "已生成合并文件:$mergedFullPath,删除该目录原始PDF" Remove-Item -Path $sourcePdfs.FullName -Force } else { Write-Warning "目录 $currentDir 合并失败,跳过删除操作" } }
注意事项
- 脚本保留了你原有合并文件的生成逻辑,也提供了合并文件生成到子文件夹内的可选写法,按需选择即可
- 新增了合并结果校验,只有pdftk正常执行完成后才会删除原始PDF,避免合并中途出错导致文件丢失
- 测试阶段可以先注释掉
Remove-Item那行,确认合并文件生成路径、内容都符合预期后再开启删除逻辑 - 如果遇到PDF被其他程序占用的情况,删除操作会报错,可在
Remove-Item后添加-ErrorAction SilentlyContinue参数忽略报错,后续手动处理占用文件即可
内容的提问来源于stack exchange,提问作者user15229415
相关产品推荐
相关产品推荐

