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

PDF-Dateien in vielen Unterordnern mit PDFTK zusammenfügen und umbenennen

Mitglied: AlterSchuljunge

AlterSchuljunge (Level 1) - Jetzt verbinden

12.09.2007, aktualisiert 13.09.2007, 9571 Aufrufe, 9 Kommentare

Dokumenten/Schaltplan-Archivierung über Kopier/Scaneinheit legt automatisch PDF-Dateien an. Diese werden dann auf einen FTP-Server (derzeit ein Laptop) geladen und von Hand in entsprechende Ordner abgelegt. Dabei wird jede einzelne Seite als einzelne PDF-Datei gespeichert.

Hallo erstmal,

ich habe folgendes Problem:
PDF-Dateien liegen in vielen verschiedenen Unterverzeichnissen und sollen zusammengefügt werden, aber immer nur in der untersten Verzeichnisebene. Das sieht derzeit so aus:

FTP-ROOT -----> Hier werden die Daten vom Kopierer abgelegt und händisch in die Unterordner einsortiert
1983 -----> Maschinenbaujahr (von 1980-1998 evtl. kommen andere dazu, der Ordner "Andere" zählt separat)
5958 - Lenzen -----> Die Kom.-Nr. der Maschine und der Kundenname evtl. weitere Daten wie Maschinentyp durch Leerzeichen und "-" getrennt
124584252_1.pdf -----> Die Dateien im Ordner mit der Maschinen-Nr. - Die lange Nr. ist die Scan-Job-Nr. und bleibt je Ordner gleich, die einzelnen Seiten werden alle fortlaufend nummeriert mit "_Nr."
124584252_2.pdf
124584252_3.pdf

Habe leider kaum/keine Erfahrung mit Find, FindStr und For welche ich den anderen Batch-Dateien nach benutzen sollte.
Da die ganze Archivierungsgeschichte seit gestern angelaufen ist und ich noch einen Berg anderer Arbeiten habe kann ich mich leider zeitlich nicht ausführlich mit dem Thema beschäftigen und einarbeiten, und benötige innerhalb der nächsten 1-2Wochen eine brauchbare Lösung.


Hier noch ein Bild wie die derzeitige Ordnerstruktur ist:
64d837097feb5aa08ea21bf909a3d720-ordner - Klicke auf das Bild, um es zu vergrößern


Zusammensetzen der Dateien mit PDFTK sollte sich folgendermaßen ergeben, damit der Ordnername auf die Datei übertragen wird: PDFTK 124584252_1.pdf 124584252_2.pdf 124584252_3.pdf CAT "5958 - Lenzen.pdf"



Ich wäre über jeden praxisnahen Vorschlag und vor allen Dingen Beispielen dankbar.

freundliche Grüße

AlterSchuljunge
Mitglied: bastla
13.09.2007 um 01:42 Uhr
Hallo AlterSchuljunge und willkommen im Forum!

Der folgende Entwurf einer Batch-Lösung geht davon aus, dass sich die Reihenfolge der einzelnen .pdf-Dateien anhand des Dateidatums bestimmen lässt (da eine Sortierung nach Dateinamen durch die unterschiedliche Länge der angefügten Nummer dazu führen würde, dass nach "124584252_1.pdf" als nächstes "124584252_10.pdf", "124584252_11.pdf", ..., "124584252_19.pdf" und dann erst "124584252_2.pdf" verwendet würden).
01.
@echo off & setlocal
02.
set "root=D:\FTP-ROOT"
03.
set Von=1983
04.
set Bis=1983
05.

06.
for /l %%j in (%Von%,1,%Bis%) do (
07.
	for /d %%v in ("%root%\%%j\*.*") do call :ProcessClient "%%v"
08.
)
09.
goto :eof
10.

11.
:ProcessClient
12.
set "PDFFile=%~1\%~n1.pdf"
13.
if exist "%PDFFile%" del "%PDFFile%"
14.
set "Temp1=%~1\Temp1.tmp"
15.
set "Temp2=%~1\Temp2.tmp"
16.
set First=True
17.
for /f "delims=" %%d in ('dir %1 /b /od') do if not defined First (
18.
	pdftk "%Temp1%" "%~1\%%d" cat output "%Temp2%"
19.
	move "%Temp2%" "%Temp1%"
20.
) else (	
21.
	copy "%~1\%%d" "%Temp1%">nul
22.
	set First=
23.
)
24.
move "%Temp1%" "%PDFFile%"
25.
goto :eof
Der Pfad in Zeile 2 ist natürlich an Deine Gegebenheiten anzupassen, und zum Testen habe ich nur das Jahr 1983 (Von = Bis) vorgeben - wenn der Batch wunschgemäß funktionieren sollte, einfach die beiden Jahreszahlen anpassen.

Kurz zum Ablauf:
Mit den ersten beiden "for"-Schleifen werden die einzelnen Jahre und innerhalb jeden Jahres die einzelnen Kundenverzeichnisse durchlaufen und zur Bearbeitung der vollständige Verzeichnispfad an das entsprechende Unterprogramm (":ProcessClient") weitergegeben.

In diesem Unterprogramm wird vorweg eine bereits existierende Sammeldatei gelöscht. (Alternativ könnte auch auf die Bearbeitung des Verzeichnisses verzichtet werden, wenn die Sammeldatei bereits vorhanden ist.)

Danach wird die erste (= älteste) .pdf-Datei des Verzeichnisses als Ausgangsdatei in eine temporäre Datei ("Temp1.tmp") kopiert.

Ab der zweiten Datei wird jeweils die Temporärdatei mit der aktuell zu bearbeitenden Datei verkettet und in eine zweite Temp-Datei ("Temp2.tmp") geschrieben (da - zumindest in der von mir zum Testen verwendeten Version 1.12 - PDFTK gleichnamige Quell- und Zieldateien nicht akzeptiert).

Durch Umbenennen der (verketteten) "Temp2.tmp" wieder auf "Temp1.tmp" kann dieser Vorgang für jede einzelne .pdf-Datei wiederholt werden, bis schließlich (durch Umbenennen der letzten Temp-Datei) die endgültige, nach dem Verzeichnisnamen benannte, Sammeldatei entsteht.

Grüße
bastla

P.S.: Nur zur Sicherheit: Es sollten zwar alle Originaldateien erhalten bleiben, dennoch empfiehlt es sich, zum Testen mit Kopien zu arbeiten ...
Bitte warten ..
Mitglied: AlterSchuljunge
13.09.2007 um 08:15 Uhr
Habe es mal für 1983 getestet und später für alle anderen Dateien auch (natürlich mit Backup!).
Es hat auf Anhieb alles gleich perfekt funktioniert!

Vielen Dank an Dich BASTLA !!!
Du hast mir jede Menge Zeit/Arbeit und dementsprechend auch Ärger erspart!

Gruß

AlterSchuljunge
Bitte warten ..
Mitglied: Sternex
21.09.2010 um 10:54 Uhr
Hallo,

ich habe eig genau das gleiche Problem wie oben beschrieben.
Jedoch funktioniert dieser Batch bei mir so nicht.

Ich möchte alle im Ordner Root befindlichen Unterordner einbeziehen (nicht wie hier die angegebenen Jahreszahlen).
In diesen Unterordnern befinden sich rund 20 PDFs, welche nach Dateiname sortiert zusammengefügt werden sollen. (01.pdf, 02.pdf, 03.pdf usw...)

Mit dem "Umarbeiten" habe ich aber gerade so meine Probleme.
Vielen Dank schonmal für die Hilfe ;)
Bitte warten ..
Mitglied: bastla
21.09.2010 um 11:45 Uhr
Hallo Sternex!

Versuch es mal (nach dem Anpassen der Zeile 2 und dem Entfernen der für Dich überflüssigen Zeilen 3 und 4) mit folgendem Ersatz der Zeilen 6 bis 8:
for /d %%v in ("%root%\*.*") do call :ProcessClient "%%v"
Um die Sortierung nach Dateinamen durchzuführen, wäre in Zeile 17 anstelle von
... dir %1 /b /od ...
die Schreibweise
... dir %1 /b /on ...
zu verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: Sternex
21.09.2010 um 13:18 Uhr
Vielen Dank bastla!
Ein Problem noch. In dem Root Verz. befinden sich ja alle Unterordner.
Wenn ich den Root Pfad angebe verarbeitet er nix sondern legt in dem Pfad eine PDF Datei ohne Inhalt an.
Also irgendwie geht er nicht in die Ordner.

Ach und nochetwas. Kann man irgendwie die Fertigen PDFs dann eine Ebene höher legen?
Also in das Root Verz. und nicht in dem Unterordner belassen?

Und das man sieht was er gerade bearbeitet wäre auch toll. müsste ja irgendwo einfach nur ein echo rein oder?

Vielen Dank!
Bitte warten ..
Mitglied: bastla
21.09.2010 um 17:33 Uhr
Hallo Sternex!

Sorry - hatte vorhin nur kurz drübergeschaut ...

Zwar immer noch ungetestet, aber hoffentlich trotzdem mit einem passenden Ergebnis, könnte das so gehen:
01.
@echo off & setlocal
02.
set "root=D:\FTP-ROOT"
03.

04.
for /d %%v in ("%root%\*.*") do call :ProcessClient "%%v"
05.
goto :eof
06.

07.
:ProcessClient
08.
set "PDFFile=%root%\%~n1.pdf"
09.
if exist "%PDFFile%" del "%PDFFile%"
10.

11.
set "Temp1=%temp%\Temp1.tmp"
12.
set "Temp2=%temp%\Temp2.tmp"
13.

14.
pushd %1
15.
set First=True
16.
for /f "delims=" %%d in ('dir /b /on *.pdf') do if not defined First (
17.
    echo Bearbeite "%~1\%%d"
18.
    pdftk "%Temp1%" "%%d" cat output "%Temp2%"
19.
    move "%Temp2%" "%Temp1%"
20.
) else (
21.
    echo Bearbeite "%~1\%%d"
22.
    copy "%%d" "%Temp1%">nul
23.
    set First=
24.
)
25.
move "%Temp1%" "%PDFFile%">nul && echo "%~n1.pdf" erstellt & echo\
26.
popd
27.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Sternex
22.09.2010 um 14:17 Uhr
Hallo bastla,
also das er es eine Ebene höher legt und das man sieht was passiert klappen Super!

Das er jedoch den Root Pfad annimmt geht immernoch nicht.

Also mein Aufbau nochmal:
  1. Root
    • Ordner1
      • Unterordner von Ordner1
        1. PDF
        2. PDF....
    • Ordner2
      • Unterordner von Ordner2
        1. PDF
        2. PDF....

    Außerdem muss ich noch (set "pdftk-bin=C:\Programme\pdftk.exe") setzen, da er sonst nur eine PDF statt aller nimmt.
    Und kann man den Vorgang noch beschleunigen? Da er mit den 2 tmp Files arbeitet ist es verdammt langsam.

    Dank für die Hilfe!
Bitte warten ..
Mitglied: bastla
22.09.2010 um 16:28 Uhr
Hallo Sternex!

Auf diese Struktur wäre ich anhand von
In dem Root Verz. befinden sich ja alle Unterordner.
bzw
Kann man irgendwie die Fertigen PDFs dann eine Ebene höher legen?
Also in das Root Verz. und nicht in dem Unterordner belassen?
nicht gekommen ...

Neuer Versuch:
01.
@echo off & setlocal
02.
set "root=D:\FTP-ROOT"
03.

04.
for /d %%v in ("%root%\*.*") do for /d %%u in ("%%v\*.*") do call :ProcessClient "%%u" "%%v"
05.
goto :eof
06.

07.
:ProcessClient
08.
set "PDFFile=%root%\%~n1.pdf"
09.
if exist "%PDFFile%" del "%PDFFile%"
10.

11.
set "Temp1=%temp%\Temp1.tmp"
12.
set "Temp2=%temp%\Temp2.tmp"
13.

14.
pushd %1
15.
set First=True
16.
for /f "delims=" %%d in ('dir /b /on *.pdf') do if not defined First (
17.
    echo Bearbeite "%~1\%%d"
18.
    pdftk "%Temp1%" "%%d" cat output "%Temp2%"
19.
    move "%Temp2%" "%Temp1%"
20.
) else (
21.
    echo Bearbeite "%~1\%%d"
22.
    copy "%%d" "%Temp1%">nul
23.
    set First=
24.
)
25.
move "%Temp1%" "%PDFFile%">nul && echo "%~n1.pdf" erstellt & echo\
26.
popd
27.
goto :eof
Falls die erstellten PDF den Namen des Ordners (nicht des Unterordners) erhalten sollen, wäre als Zeile 8
set "PDFFile=%root%\%~n2.pdf"
zu verwenden.
Und kann man den Vorgang noch beschleunigen? Da er mit den 2 tmp Files arbeitet ist es verdammt langsam.
Das "move" kann eigentlich nicht so wahnsinnig viel Zeit kosten ...
Da nun mal zum Sicherstellen der richtigen Reihenfolge die PDF einzeln hinzugefügt werden müssen, sehe ich keine Möglichkeit, den Ablauf zu beschleunigen ...

Grüße
bastla
Bitte warten ..
Mitglied: Sternex
22.09.2010 um 16:47 Uhr
Klasse jetzt passt alles! Danke!

mit der Geschwindigkeit ist mir nur aufgefallen da es manuell mit pdftk schneller geht.
Daher dachte ich es liegt am erstellen der tmp's...

Aber dann dauert es eben etwas länger. Hauptsache es geht!

Danke nochmal
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

PDF-Stapelverarbeitung mit PDFTK (in batch, shell, powershell)

gelöst Frage von brause1701Batch & Shell3 Kommentare

Hallo Community, ich möchte beliebig viele PDF-Dateien mit pdftk verarbeiten und in ein Output-Verzeichnis ablegen (evtl. adaptierten Namen). Idealerweise ...

Batch & Shell

Sobald PDF-Datei im Verzeichnis PDF-Datei ausdrucken

Frage von SwisterBatch & Shell14 Kommentare

Hallo, Ich habe ein kleines Programm geschrieben, dass mir sobald eine PDF-Datei im Verzeichnis vorhanden ist diese ausdruckt und ...

Windows 7

Benutzer in PDF Datei

Frage von JonasHEWWindows 75 Kommentare

Hallo zusammen, ich habe das Problem, dass ich herausfinden muss, welche Benutzer aktuell eine bestimmte PDF Datei aus dem ...

Batch & Shell

Automatische PDF Erstellung mit PDFTK aus Dateien mit gleichen Anfangsbezeichnung im Dateinamen

gelöst Frage von BirgitBBatch & Shell7 Kommentare

Ich verstehe nichts von Programmierung. Das nur schon mal vorab. Habe mich auch schon 2 Tage durch die Seiten ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 8 StundenInternet2 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 12 StundenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Switche und Hubs
Medienkonverter mit 12 oder 24 Ports gesucht
Frage von wmuellerSwitche und Hubs24 Kommentare

Guten Morgen, ich bin auf der Suche nach einem größeren Medienkonverter, der "stumpf" 1:1 die Ports auf über ein ...

Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server23 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell21 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...