У меня есть папка с файлами 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 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!