1 votes

Fusionner des fichiers PDF avec PDFTK avec les mêmes 4 chiffres dans le nom du fichier

J'ai un dossier contenant des fichiers PDF ( C:\1_PDF ). Il existe deux types de noms de fichiers, 330526.pdf y 000526.pdf . Les noms de ces fichiers changent (augmentent en nombre) 330527.pdf , 330528.pdf , 330529.pdf . Il en va de même pour le 000526.pdf série.

J'aimerais maintenant que le code passe en revue les fichiers du dossier et fusionne tous les fichiers dont les quatre derniers chiffres du nom sont identiques ( xx**0526**.pdf ). Il peut y avoir 1 ou 200 de ces paires de fichiers.

La fusion elle-même n'était pas un problème, voici comment je l'ai résolu :

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

Mais c'est la boucle qui me tue. Comment faire ?

J'ai parcouru à peu près tout ce que j'ai pu trouver sur Google et je n'ai toujours pas trouvé de solution. J'espère que j'obtiendrai de l'aide ici.

0voto

Silbee Points 830

Mon powershell est rouillé, mais je peux vous aider à atteindre un résultat.

Tout d'abord, nous pourrions dresser une liste des "premières" pages à l'aide de la fonction Get-ChildItem de Powershell, comme suit

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

Ensuite, nous itérons sur chaque nom de la liste

ForEach ($firstPage in $firstPageList) {

Trouvons sa paire, la deuxième page

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

Créez un nom pour votre résultat

    $output = "RG-$secondPage"

Enfin, exécutez votre commande

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

À des fins de test, vous pouvez remplacer iex par Write-Host pour obtenir une sortie visuelle de la commande qui sera appelée.

Et terminer la boucle for.

}

De la manière dont il est écrit maintenant, vous devrez l'exécuter à partir de C:\1_PDF.

J'espère que cela vous aidera.

0voto

ASD Points 99

Cela ne fonctionne pas, j'ai essayé plusieurs choses, mais je n'ai pas réussi à le faire fonctionner.

Voici le code :

$firstPageList = Get-ChildItem C:\Users\Test\Desktop\PDF_Temp\3 * -Fichier -Nom

ForEach ($firstPage in $firstPageList) {

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

$output = "RG-$firstPage" (page d'accueil)

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

}

Voici l'erreur que j'obtiens :

Erreur

Write-Host me semble être une bonne solution :

Écrire à l'hébergeur

0voto

ASD Points 99

Je l'ai ! Cela fonctionne parfaitement :

$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"

Merci beaucoup Silbee !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X