Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PDFs per Batch zusammenfügen

Mitglied: 43964

43964 (Level 1)

25.01.2008, aktualisiert 17.10.2012, 21019 Aufrufe, 17 Kommentare

Hallo,

ich habe folgendes Szenario.
Unsere Kunden bekommen alle paar Tage Abrechnungen.
Diese Abrechnungen bestehen aus 4 PDF-Dateien.
Diese Dateien haben folgenden Aufbau:

1.) "Abrechnung_Rechnungen_KDNR_DATUM_LFDNR.PDF"
2.) "Abrechnung_Gesamt_ABCDE_KDNR_DATUM_LFDNR.PDF"
3.) "Abrechnung_Gesamt_FGHIJ_KDNR_DATUM_LFDNR.PDF"
4.) "Abrechnung_Buchungen_KDNR_DATUM_LFDNR.PDF"

KDNR: 4-Stellige (eindeutige) Kundennummer
DATUM: Erstellungsdatum. Format: 25012008
LFDNR: Laufende Abrechnungsnummer. Von 1 bis -theoretisch- unendlich.
ABCDE: Geschäftspartner 5stellig (möchte ich hier nicht nennen)
FGHIJ: Geschäftspartner 5stellig (möchte ich hier nicht nennen)

Diese Dokumente befinden sich in f:\outbox\aktuell\KDNR\ (also z.B. f:\outbox\aktuell\1234)
Jede Stunde werden diese Dokumente automatisch verschickt.
Der Ordner "aktuell" ist danach leer. Die Dokumente sind dann nach "f:\outbox\verarbeitet\DATUM\" verschoben.

Ziel ist es jetzt, diese 4 Dokumente per Batchbefehl (Also als stündlich geplanter Task) zu einem Dokument "Abrechnung_Gesamt_KDNR_DATUM_LFDNR.pdf" zusammenzufassen.

Die 4 Dokumente können dann anschließend gelöscht werden.

Adobe Professional 6.0 ist vorhanden.

Kann jemand mit einem Batch helfen?
Während der Testphase wäre es sinnvoll, wenn der Part des Löschens noch ausgeklammert wird.

Ich habe schon den Thread (https://www.administrator.de/forum/pdf-dateien-in-vielen-unterordnern-mi ...) gelesen, aber die Batch war für mich zu kompliziert, als dass ich diese einfach hätte umschreiben können.


Vielen Dank!
Mitglied: Dynadrate
25.01.2008 um 15:16 Uhr
Das lässt sich sogar kostenlos (=ohne Adobe) machen.
Ghostscript
Hier wird erklärt wie man mit Ghostscript merged (zusammenfügt): klick

Müsste man normalerweise alles per Batch erschlagen können.
Bitte warten ..
Mitglied: bastla
25.01.2008 um 16:07 Uhr
Hallo Schwimmbutz und Dynadrate!

Das lässt sich sogar kostenlos (=ohne Adobe) machen.
Auch, wie im oben zitierten Beispiel, mit pdftk.

... Batch war für mich zu kompliziert, als dass ich diese einfach hätte umschreiben können.
Ich hoffe, dass es mir gelungen ist :
01.
@echo off & setlocal 
02.
 
03.
set "Base=f:\outbox\aktuell" 
04.
set "PDFTK=C:\Tools\pdftk.exe" 
05.
::Download von: http://www.pdfhacks.com/pdftk/ 
06.
 
07.
set "PDF1=Abrechnung_Rechnungen" 
08.
set "PDF2=Abrechnung_Gesamt_?????" 
09.
set "PDF3=Abrechnung_Buchungen" 
10.
 
11.
set "PDFGes=Abrechnung_Gesamt" 
12.
 
13.
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i" 
14.
goto :eof 
15.
 
16.
:ProcessCust 
17.
pushd "%~f1" 
18.
if not exist "%PDF1%_*.pdf" goto :EndSub 
19.
 
20.
for /f "tokens=2* delims=_" %%a in ('dir /b "%PDF1%_*.pdf"') do set "Suffix=%%b" 
21.
"%PDFTK%"  %PDF1%_%Suffix% %PDF2%_%Suffix% %PDF3%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask 
22.
 
23.
::Loeschsimulation 
24.
echo Zu loeschen in %cd%: 
25.
echo. 
26.
for /f "delims=" %%i in ('dir /b "*_%Suffix%"^|findstr /v "%PDFGes%_%Suffix%"') do echo %%i 
27.
echo ============================================= 
28.
echo. 
29.
echo. 
30.
 
31.
:EndSub 
32.
popd
Für jeden KDNR-Ordner wird vorweg geprüft, ob eine "Abrechnung_Rechnungen_KDNR_DATUM_LFDNR.PDF" vorhanden ist. Wird eine solche Datei gefunden, kann daraus der Teil "KDNR_DATUM_LFDNR.PDF" (Suffix) entnommen werden, um die weiteren 3 .pdf-Dateien damit zu identifizieren (aus der Beschreibung geht nicht eindeutig hervor, dass sich nur die angeführten 4 Dateien im jeweiligen Ordner befinden).

Die Sammeldatei wird im übergeordneten Ordner ("f:\outbox\aktuell") erstellt. Ist bereits eine gleichnamige Sammeldatei vorhanden, wird diese (durch Verwendung der Option "dont_ask") überschrieben.

Das Löschen wird durch die Ausgabe einer Liste der zu löschenden Dateien simuliert.

Grüße
bastla

[Edit] Sammeldatei wird im selben Ordner erstellt, daher muss diese vom Löschen ausgenommen werden - Code entsprechend angepasst. [/Edit]
Bitte warten ..
Mitglied: 43964
25.01.2008 um 16:46 Uhr
HAllo.

Danke für die Lösung.
Ich bin noch nicht zu der Umsetzung gekommen, allerdings muss die fertige Datei im selben Ordner wie die 4 Dateien liegen (also z.B: im Ordner f:\outbox\aktuell\1234\). Sonst funktioniert das Versenden nicht.
Vielen Dank.
Bitte warten ..
Mitglied: bastla
25.01.2008 um 16:53 Uhr
Hallo Schwimmbutz!

allerdings muss die fertige Datei im selben Ordner wie die 4 Dateien liegen
Dazu musst Du nur den Verzeichniswechsel (mit "..\") aus der entsprechenden Zeile nehmen - ich ändere das gleich oben.

Grüße
bastla
Bitte warten ..
Mitglied: 43964
25.01.2008 um 17:07 Uhr
Hi,

also das zusammenfügen funktioniert. Wird auch in den richtigen Ordner gespeichert.
Problem ist jetzt aber noch, dass bei "Zu löschen" auch die Gesamt-Datei steht.

Evtl. kann auch die "neue" PDF-Datei in "Abrechnung_KDNR_DATUM_LFDNR.PDF" umbenannt werden. Falls es das einfacher macht?!

Aber ansonsten ein ABSOLUT PERFEKTER BATCH!
Bitte warten ..
Mitglied: bastla
25.01.2008 um 17:11 Uhr
Hallo Schwimmbutz!

Problem ist jetzt aber noch, dass bei "Zu löschen" auch die Gesamt-Datei steht.
Sollte sie nicht mehr (siehe angepasste Version) ...

Grüße
bastla
Bitte warten ..
Mitglied: 43964
25.01.2008 um 17:23 Uhr
OK.
Hat auch funktioniert.

Mir ist allerdings aufgefallen, dass es SEHR SELTEN, auch mal "Abrechnung_Zahlungen_KDNR_DATUM_LFDNR.pdf" sowie "Abrechnung_Umbuchungen_KDNR_DATUM_LFDNR.pdf" gibt.

Noch was:
Die Zeile "set "PDF2=Abrechnung_Gesamt_?????"" erfasst dann beide Dokumente (Also ABCDE und FGHIJ) ??

Dann müsstest du mir noch verraten, wie ich später die Löschsimulation entferne damit das Proggi dann lauffähig ist.

Dann wäre es perfekt
Vielen Dank.
Bitte warten ..
Mitglied: bastla
25.01.2008 um 17:40 Uhr
Hallo Schwimmbutz!

Ist mit "Abrechnung_Zahlungen_KDNR_DATUM_LFDNR.pdf" sowie "Abrechnung_Umbuchungen_KDNR_DATUM_LFDNR.pdf" jetzt die Liste der (uU) zu verarbeitenden Dateien komplett? Da "pdftk" nicht ganz entspannt auf nicht gefundene Dateien reagiert , muss ich noch eine Prüfung bzw eine Zusammenstellung der tatsächlich im jeweiligen Ordner vorhandenen Dateien einbauen.

Und nur zur Sicherheit: Die "Abrechnung_Rechnungen_KDNR_DATUM_LFDNR.PDF", aus welcher ich den variablen Teil (Suffix) hole, ist aber immer vorhanden?

Die Zeile "set "PDF2=Abrechnung_Gesamt_?????"" erfasst dann beide Dokumente (Also ABCDE und FGHIJ) ??
Das ist der Plan - es sei denn, ABCDE und FGHIJ wären konstant; dann würde ich sie exakt festlegen.

Dann müsstest du mir noch verraten, wie ich später die Löschsimulation entferne damit das Proggi dann lauffähig ist.
Relativ einfach - die mit "echo" beginnenden Zeilen kannst Du ersatzlos streichen, und in der "for"-Zeile musst Du nur das "echo" durch ein "del" ersetzen.

Grüße
bastla
Bitte warten ..
Mitglied: 43964
25.01.2008 um 17:44 Uhr
Hi bastla.

Die am Anfang beschriebenen 4 Dokumente sind IMMER vorhanden.
Es gibt halt manchmal diese beiden zusätzlichen. Aber eben leider nicht immer.

Den Teil mit dem Suffix kann ich auch bestätigen. IMMER konstant. (Also "Abrechnung_Rechnungen). Kd-Nr / Datum variiert (Von der Stellenzahl aber konstant). Lfd-Nr wie gesagt aufsteigend.

Ich weiß gar nicht, wie ich danken soll

Gruß,
Schwimmbutz
Bitte warten ..
Mitglied: bastla
25.01.2008 um 18:37 Uhr
Hallo Schwimmbutz!

Es sollten jetzt die beiden genannten zusätzlichen .pdf-Files ebenfalls in die Sammeldatei geschrieben werden. Wenn noch weitere Dateien (nur nach dem Muster "Abrechnung_Bezeichnung_KDNR_DATUM_LFDNR.pdf") hinzukommen, kannst Du diese einfach, durch Leerzeichen getrennt, in die Zeile "set PDFWeitere=..." aufnehmen.
01.
@echo off & setlocal 
02.
 
03.
set "Base=f:\outbox\aktuell" 
04.
set "PDFTK=C:\Tools\pdftk.exe" 
05.
::Download von: http://www.pdfhacks.com/pdftk/ 
06.
 
07.
set "PDF1=Abrechnung_Rechnungen" 
08.
set "PDF2=Abrechnung_Gesamt_?????" 
09.
set "PDFWeitere=Abrechnung_Buchungen Abrechnung_Zahlungen Abrechnung_Umbuchungen" 
10.
 
11.
set "PDFGes=Abrechnung_Gesamt" 
12.
 
13.
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i" 
14.
goto :eof 
15.
 
16.
:ProcessCust 
17.
pushd "%~f1" 
18.
if not exist "%PDF1%_*.pdf" goto :EndSub 
19.
 
20.
for /f "tokens=2* delims=_" %%a in ('dir /b "%PDF1%_*.pdf"') do set "Suffix=%%b" 
21.
 
22.
set "PDFListe=%PDF1%_%Suffix%" 
23.
for %%a in (%PDF2%_%Suffix%) do call :ProcessFile "%%a" 
24.
for %%a in (%PDFWeitere%) do call :ProcessFile "%%a_%Suffix%" 
25.
 
26.
"%PDFTK%" %PDFListe% cat output "%PDFGes%_%Suffix%" dont_ask 
27.
 
28.
::Loeschsimulation 
29.
for /f "delims=" %%i in ('dir /b "*_%Suffix%"^|findstr /v "%PDFGes%_%Suffix%"') do echo del "%%i" 
30.
 
31.
:EndSub 
32.
popd 
33.
goto :eof 
34.
 
35.
:ProcessFile 
36.
if exist "%~1" set "PDFListe=%PDFListe% %~1"
Grüße
bastla
Bitte warten ..
Mitglied: 43964
28.01.2008 um 10:10 Uhr
Hallo bastla,

vielen Dank für die Lösung.
Ich habe eifrig getestet. Dabei sind mir doch noch Sachen aufgefallen:

Das Dokument: Abrechnung_Rechnungen ist nicht immer überall vorhanden.
Aber: Abrechnung_Buchungen ist überall vorhanden!

Ist es auch möglich, die Reihenfolge der Dokumente zu beeinflussen?
Ich habe etwas von set PDF=1... gelesen.

Und zwar:
Abrechnung_Gesamt_ABCDE = 1
Abrechnung_Gesamt_FGHIJ = 2
Abrechnung_Buchungen = Letzte

Diese 3 Dokumente sind IMMER vorhanden. Alle anderen dazwischen einsortieren. Ist das möglich?

Sorry, dass ich noch nicht fertig bin
Bitte warten ..
Mitglied: bastla
28.01.2008 um 13:46 Uhr
Hallo Schwimmbutz!

Sind eigentlich (wie bisher von mir angenommen) "ABCDE" und "FGHIJ" variabel? Falls nein, lässt sich natürlich die Reihenfolge entsprechend fixieren, falls doch, müsstest Du ein Kriterium für die Reihung angeben (= woran ist "ABCDE" zu erkennen?).
Abrechnung_Buchungen ... IMMER vorhanden
In der nächsten Version (erst, wenn obige Frage geklärt ist) werde ich dann das Auslesen des Suffix "KDNR_DATUM_LFDNR.PDF" auf Basis dieser Datei vornehmen.

Grüße
bastla
Bitte warten ..
Mitglied: 43964
28.01.2008 um 13:49 Uhr
Hi,

ABCDE ist immer fest belegt.
FGHIJ auch.

Hier werden 5stellige Firmennamen angegeben. Diese möchte ich allerdings hier im Netz nicht hinschreiben. Deshalb die Synonyme ABCDE bzw FGHIJ.
Bitte warten ..
Mitglied: bastla
28.01.2008 um 14:02 Uhr
Hallo Schwimmbutz!

Dann versuchen wir's mal so:
01.
@echo off & setlocal 
02.
 
03.
set "Base=f:\outbox\aktuell" 
04.
set "PDFTK=C:\Tools\pdftk.exe" 
05.
::Download von: http://www.pdfhacks.com/pdftk/ 
06.
 
07.
set "PDFCheck=Abrechnung_Buchungen" 
08.
set "PDFAlle=Abrechnung_Gesamt_ABCDE Abrechnung_Gesamt_FGHIJ Abrechnung_Rechnungen Abrechnung_Zahlungen Abrechnung_Umbuchungen Abrechnung_Buchungen" 
09.
 
10.
set "PDFGes=Abrechnung_Gesamt" 
11.
 
12.
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i" 
13.
goto :eof 
14.
 
15.
:ProcessCust 
16.
pushd "%~f1" 
17.
if not exist "%PDFCheck%_*.pdf" goto :EndSub 
18.
 
19.
for /f "tokens=2* delims=_" %%a in ('dir /b "%PDFCheck%_*.pdf"') do set "Suffix=%%b" 
20.
 
21.
set PDFListe= 
22.
for %%a in (%PDFAlle%) do call :ProcessFile "%%a_%Suffix%" 
23.
 
24.
"%PDFTK%" %PDFListe% cat output "%PDFGes%_%Suffix%" dont_ask 
25.
 
26.
::Loeschsimulation 
27.
for /f "delims=" %%i in ('dir /b "*_%Suffix%"^|findstr /v "%PDFGes%_%Suffix%"') do echo %%i 
28.
 
29.
:EndSub 
30.
popd 
31.
goto :eof 
32.
 
33.
:ProcessFile 
34.
if exist "%~1" set "PDFListe=%PDFListe% %~1"
Die Reihenfolge der einzelnen Dateien kannst Du in der Zeile
01.
set "PDFAlle=..."
festlegen.

Grüße
bastla
Bitte warten ..
Mitglied: 43964
28.01.2008 um 14:36 Uhr
Super!

Das funktioniert 100%ig!

Was muss ich nun entfernen, um die Dateien wirklich zu löschen, und nicht nur zu simulieren?
Bitte warten ..
Mitglied: bastla
28.01.2008 um 15:18 Uhr
Hallo Schwimmbutz!

Die Zeile
01.
for /f "delims=" %%i in ('dir /b "*_%Suffix%"^|findstr /v "%PDFGes%_%Suffix%"') do echo %%i
ist zu ändern auf
01.
for /f "delims=" %%i in ('dir /b "*_%Suffix%"^|findstr /v "%PDFGes%_%Suffix%"') do del %%i
Grüße
bastla
Bitte warten ..
Mitglied: 43964
28.01.2008 um 15:22 Uhr
Hallo Bastla.

Super!! Ich danke dir ganz herzlich!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Mehrere PDF-Dateien per Batch zusammenfügen

gelöst Frage von GrimmliBatch & Shell1 Kommentar

Hallo zusammen, in einem Ordner liegen mehrere pdf Dateien. Die eine Hälfte der PDF's fängt mit „B_“ an gefolgt ...

Batch & Shell

Suche Batch-Programm zum Zusammenfügen zweier PDF-Dateien

gelöst Frage von SinzalBatch & Shell3 Kommentare

Hallo Admins, ich habe ein Programm geschrieben, welches zwei Listen als separate PDF-Dateien ausgibt. Beide Listen sollen jedoch in ...

Windows Tools

PDFs nummerieren und zusammenfügen

gelöst Frage von DeeJayBeeWindows Tools3 Kommentare

Hallo zusammen, mein Kollege muss für eine Behörde ein paar Daten zusammen suchen. Es gibt ein Antragsformular (ausfüllbares PDF), ...

Batch & Shell

PDF Dateien mit PDFTKBuilderPortable zusammenfügen

gelöst Frage von makroll10Batch & Shell4 Kommentare

Hallo Allerseits, ich beabsichtige mit dem "PDFTKBuilderPortable" mehrere PDF-Dateien zusammen zu fassen. Eigentlich ist das ja auch ganz einfach: ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 8 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 18 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...