Автоматически объединять файлы PDF с похожими именами файлов

Автоматически объединять файлы PDF с похожими именами файлов

Мне нужно объединить несколько PDF-файлов.

У меня есть несколько файлов PDF в одной папке. PDF-файлы, которые нужно объединить вместе, будут иметь общее частичное имя файла; например:

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

Имя файла будет начинаться с цифр, затем подчеркивание, а затем имя файла. У меня будут сотни похожих PDF-файлов, и я ищу способ автоматически объединить эти файлы с помощью пакетного скрипта, VBA в Excel или чего-то еще.

Вывод нового файла должен быть в отдельной папке с именем 123456.pdf. Я использую ОС Windows. В моей системе установлены Adobe Reader, PDF995 и CutePDFwriter.

Я могу собрать все pdf в одной главной папке. В этой папке будет несколько pdf, как показано ниже.

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

В этом сценарии я ожидаю увидеть в выходной папке следующие PDF-файлы:

123456.pdf
111111.pdf
222222.pdf

решение1

(Не проверено)

  1. Скачатьpdftk(прямая ссылка здесь).
  2. Извлеките его куда-нибудь.
  3. Соедините pdftk.exe и пакет.
  4. Затем откройте cmdместо, где находится партия*, и запустите ее.
    *(Shift+Правая кнопка мыши открывает командную строку)

Скрипт должен работать, если структура папок выглядит следующим образом:

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

И не в одной папке, где все файлы.

@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"
)

Удалите echo, если считаете, что партия в порядке.

Ответ во многом вдохновленэтот

Обновлять: Есть два ответа, которые дополняют мой пост

Связанный контент