Fusionar archivos PDF con nombres de archivos relacionados automáticamente

Fusionar archivos PDF con nombres de archivos relacionados automáticamente

Necesito fusionar/combinar varios archivos PDF.

Lo que tengo son varios archivos PDF en una carpeta. Los archivos PDF que deben agruparse/combinarse tendrían un nombre de archivo parcial en común; Por ejemplo:

123456_ABCD.pdf
123456_EFGH.pdf
123456_IJKL.pdf 

El nombre del archivo comenzaría con números, luego un guión bajo y luego el nombre del archivo. Voy a tener cientos de archivos PDF similares y estoy buscando una manera de fusionar estos archivos automáticamente usando un script por lotes, VBA en Excel o lo que sea.

La salida del nuevo archivo debe estar en una carpeta separada con el nombre 123456.pdf. Utilizo un sistema operativo Windows. Tengo Adobe Reader, PDF995 y CutePDFwriter instalados en mi sistema.

Puedo conseguir todos los archivos PDF en una carpeta principal. Esa carpeta tendría varios archivos PDF como los que se muestran a continuación.

123456_ABCD.pdf
123456_EFGH.pdf
123456_IJKL.pdf
111111_ABCD.pdf
111111_EFGH.pdf
222222_IJKL.pdf
222222_WXYZ.pdf

En este escenario, los archivos PDF que espero en la carpeta de salida son:

123456.pdf
111111.pdf
222222.pdf

Respuesta1

(No probado)

  1. Descargarpdftk(enlace directo aquí).
  2. Extraerlo en alguna parte.
  3. Junte pdftk.exe y el lote.
  4. Luego abra cmddonde se encuentra el lote* y ejecútelo.
    *(Mayús+Clic derecho abre el símbolo del sistema aquí)

El script debería funcionar si la estructura de carpetas es así:

|
+---111111
|       111111_ABCD.pdf
|       111111_EFGH.pdf
|
+---123456
|       123456_ABCD.pdf
|       123456_EFGH.pdf
|       123456_IJKL.pdf
|
\---222222
        222222_IJKL.pdf
        222222_WXYZ.pdf

Y no en una única carpeta donde están todos los archivos.

@echo off
setlocal enabledelayedexpansion

rem source root folder where to crawl pdfs.
set "source=c:\mydoc\pdf"

rem destination folder
set "destination=c:\mydoc\merged"

for /f "delims=" %%a in ('dir /b /s /ad /o:n "%source%"') do (
    set _pdffiles=
    for /f "delims=" %%i in ('dir /b /a-d /o:n "%%a\*.pdf"') do (
        set _pdffiles=!_pdffiles! "%%i"
        set "_outputpdf=%%~ni"
    )
    echo pdftk.exe !_pdffiles! cat output "%destination%\!_outputpdf:~0,6!.pdf"
)

Elimínelo echosi cree que el lote está bien.

Respuesta inspirada en gran medida poreste

Actualizar: Hay dos respuestas que complementan mi post.

información relacionada