2016-08-26 5 views
1

У меня есть следующая ситуация:Слияние PDF-файлов автоматически с pdftk

У меня есть 5 различных папок, содержащих файлы PDF.

Папка 1 содержит один PDF - на первой странице, например Front Page.pdf.
Это должна быть первая страница для каждого нового сгенерированного PDF-файла.

Папка 2 содержит различные именованные PDF-файлы, каждый из которых начинается с 1_FileName, например 1_abcd_123.pdf, 1_ghi_675.pdf. Количество символов не одинаковое, единственное, что обычно происходит, это то, что все они начинаются с 1_.
Это должно быть страница 2.

Папка 3 содержит одинаковое количество PDF-файлов, как Folder 2. Файлы PDF называются точно такими же, как в Папка 2, за исключением того, что они начинаются с 2_.

Папка 4 содержат одинаковое количество PDF-файлы, как Folder 2 и Папки 3. PDF-файлы называются точно такими же, как в Папка 2 и Папка 3, за исключением случаев, когда они начинаются с 3_.

Папка 5 содержит один PDF, например LastPage.pdf.
Это должна быть последняя страница в каждом сгенерированном PDF-файле.

Теперь я хочу объединить титульную страницу и 3 соответствующих файла PDF из папок 2, 3, 4 и последней страницы в один PDF-файл.

Я начал исследовать онлайн и обнаружил, что это должно быть сделано с слиянием PDF, как pdftk в пакетном процессе.

Проблема в этом примере FOR loop group each iteration with same prefix in one line подходит к моей. Но разница в том, что у меня разные папки и что процесс должен искать соответствующие данные в конце имени, а не в начале.

Любой может помочь?

У меня нет опыта в этой области, но я старался как можно лучше попасть в эту тему.

ответ

0

Пакетный код демо ниже показывает, как

  • запустить команду/исполняемый файл/скрипт для каждого найденного файла в Папка 2 с именем файла, расширение файла и полный путь без двойных кавычек назначены петли переменная #,
  • с раскалывается имя найденного файла без пути - %%~nx# (имя файла и расширение файла) - на две части из-за tokens=1* на основе первого подчеркивания из-за delims=_ в имени файла, в котором
    • первая часть всегда быть только 1 присваиваются переменным цикл I, который в дальнейшем не используются и
    • все после первого подчеркивания быть назначено переменным цикл J который является следующим символом после I в ASCII-таблице и
  • обрабатывает команду с 6 полными именами файлов, в которых последним полным именем файла является новый файл для создания из других 5 имен файлов.

код Demo:

@echo off 
set "SourceFolder=C:\Temp" 
for %%# in ("%SourceFolder%\Folder 2\*") do (
    for /F "tokens=1* delims=_" %%I in ("%%~nx#") do (
     echo "%SourceFolder%\Folder 1\Front Page.pdf" "%%#" "%SourceFolder%\Folder 3\2_%%J" "%SourceFolder%\Folder 4\3_%%J" "%SourceFolder%\Folder 5\LastPage.pdf" "%SourceFolder%\%%J" 
    ) 
) 
set "SourceFolder=" 

Выход для двух файлов 1_abcd_123.pdf и 1_ghi_675.pdf в Папка 2 в C:\Temp является:

"C:\Temp\Folder 1\Front Page.pdf" "C:\Temp\Folder 2\1_abcd_123.pdf" "C:\Temp\Folder 3\2_abcd_123.pdf" "C:\Temp\Folder 4\3_abcd_123.pdf" "C:\Temp\Folder 5\LastPage.pdf" "C:\Temp\abcd_123.pdf" 
"C:\Temp\Folder 1\Front Page.pdf" "C:\Temp\Folder 2\1_ghi_675.pdf" "C:\Temp\Folder 3\2_ghi_675.pdf" "C:\Temp\Folder 4\3_ghi_675.pdf" "C:\Temp\Folder 5\LastPage.pdf" "C:\Temp\ghi_675.pdf" 

Я не PDFTK скачано , установить и прочитать документацию. Так что, наконец, необходимо вместо команды ECHO объединить 5 входных PDF-файлов вместе с новым выходным PDF-файлом.

Чтобы понять используемые команды и как они работают, откройте окно командной строки, выполните там следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.

  • echo /?
  • for /?
  • set /?
+0

жаль не реагирует раньше, я буду смотреть на это в эти дни. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^