PDF файлы с PDFTK с одинаковыми 4 цифрами в имени файла

PDF файлы с PDFTK с одинаковыми 4 цифрами в имени файла
PDF файлы с PDFTK с одинаковыми 4 цифрами в имени файла - mahmur_marganti @ Unsplash

У меня есть папка с файлами PDF (C:\1_PDF). Есть два типа имен файлов, 330526.pdf и 000526.pdf. Эти имена файлов меняются (увеличиваются по номерам) 330527.pdf, 330528.pdf, 330529.pdf, 000526.pdf. То же самое относится и к серии xx**0526**.pdf.

Теперь я хочу, чтобы код перебирал файлы в папке и объединял все файлы с одинаковыми последними четырьмя цифрами в имени файла (C:\1_PDF). Таких пар файлов может быть 1, а может быть 200.

Само объединение не является проблемой, вот как я ее решил:

pdftk A=330526.pdf B=000526.pdf shuffle A B output RG-330526.pdf

Но вот цикл - это то, что меня убивает. Как я могу это сделать?

Прошел практически через все, что смог найти в Google, и все еще не нашел решения. Я надеюсь, что смогу получить помощь здесь.

В powershell не разбираюсь, но могу помочь в достижении результата.

Во-первых, мы можем составить список "первых" страниц с помощью функции powershell Get-ChildItem, как показано ниже.

$firstPageList = Get-ChildItem C:\1_PDF\e0* -File -Name

Далее мы перебираем каждое имя в списке.

ForEach ($firstPage in $firstPageList) {

Найдем его пару - вторую страницу

    $secondPage = "330" + $firstPage.substring(4)

Создайте имя для вывода

    $output = "RG-$secondPage"

И, наконец, выполните команду

    iex "pdftk A=$firstPage B=$secondPage shuffle A B output $output"

В целях тестирования вы можете заменить iex на Write-Host, чтобы просто получить визуальный вывод того, какая команда будет вызвана.

И завершить цикл for.

}

В том виде, в котором он написан сейчас, вам придется запускать его из C:\1_PDF.

Надеюсь, это поможет.

работать, я пробовал разные вещи, но не смог заставить его работать.

Вот код:

$firstPageList = Get-ChildItem C:\Users\Test\Desktop\PDF_Temp\3* -File -Name

ForEach ($firstPage in $firstPageList) {

$secondPage = "e0" + $firstPage.substring(2)

$output = "RG-$firstPage"

pdftk A=$firstPage B=$secondPage shuffle A B output $output Write-Host pdftk A=$firstPage B=$secondPage shuffle A B output $output

}

Вот какую ошибку я получаю:

Ошибка

Write-Host выглядит хорошо, как мне кажется:

Write-Host

Получилось! Это работает идеально:

$firstPageList = Get-ChildItem C:\Users\Test\Desktop\PDF_Temp\3* -File -Name

ForEach ($firstPage in $firstPageList)
{

$secondPage = "e0" + $firstPage.substring(2)

$output = "RG-$firstPage"

Invoke-Command {pdftk A=$firstPage B=$secondPage shuffle A B output $output}}


get-childitem -Recurse -path "C:\Users\Test\Desktop\PDF_Temp\" -filter '3*.pdf' | move-item -Destination "D:\Bank\QR_ES\2_versendet"

get-childitem -Recurse -path "C:\Users\Test\Desktop\PDF_Temp\" -filter 'e*.pdf' | move-item -Destination "D:\Bank\QR_ES\2_versendet"

Большое спасибо Silbee!


NevaDev, 24 января 2023 г., 17:26