Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Hilfe bei Script ohne feste Dateinamen

Frage Entwicklung Batch & Shell

Mitglied: jehlenco

jehlenco (Level 1) - Jetzt verbinden

08.05.2014, aktualisiert 12:53 Uhr, 1566 Aufrufe, 42 Kommentare, 1 Danke

Guten Morgen liebe Community,

ich hoffe dass ich alles richtig mache. Ich habe ein Problem mit einer Batch-Datei.

Ich muss mit einer Batch Datei 2PDF's kombinieren, das klappt auch schon soweit, zur Hilfe verwende ich das kostenlose Tool "PDFTK". Mein Problem besteht nun darin mehrere Dateien ohne festen Dateinamen zu kombinieren bzw zu Stempeln.

Beispiel:
Ordner1 - Datei1, Datei2, Datei3, Datei7, Datei7345, Datei2923435..

Ordner2 - Datei1, Datei2, Datei3, Datei7, Datei7345, Datei2923435..

Ordner3 - out_Datei1, out_Datei2, out_Datei3, out_Datei7, out_Datei7345, out_Datei2923435..

Nun soll die Batch einfach alle Dateien die gleich heißen stempeln und anschließend die Dateien in Ordner 1 & 2 löschen und die fertigen Dateien in Ordner3 speichern.

Meine derzeitige Batch Datei sieht simpel und folgendermaßen aus:

01.
@echo off & setlocal 
02.
TITLE Deliver Stamp Programm 
03.
COLOR F0 
04.
ECHO. 
05.
 
06.
 
07.
REM --------------------------------------- 
08.
REM Abfrage ob sie wirklich Labeln moechten 
09.
REM --------------------------------------- 
10.
 
11.
 
12.
 
13.
:LOOP 
14.
SET Choice= 
15.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
16.
 
17.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
18.
 
19.
ECHO. 
20.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
21.
IF /I '%Choice%'=='N' GOTO REJECTED 
22.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
23.
ECHO. 
24.
GOTO Loop 
25.
 
26.
 
27.
REM --------------------------------------- 
28.
REM Abfrage negativ 
29.
REM --------------------------------------- 
30.
 
31.
 
32.
 
33.
:REJECTED 
34.
ECHO Labeln abgebrochen 
35.
ECHO Sie koennen das Programm nun schliessen. 
36.
GOTO END 
37.
 
38.
 
39.
REM --------------------------------------- 
40.
REM Abfrage positiv 
41.
REM --------------------------------------- 
42.
 
43.
 
44.
:ACCEPTED 
45.
SET NEWLINE=^& echo. 
46.
ECHO Beginn des Labelns 
47.
 
48.
 
49.
REM --------------------------------------- 
50.
REM Konvertierung der PDFs 
51.
REM --------------------------------------- 
52.
 
53.
 
54.
 
55.
pdftk deliver\deliver1.pdf background label\dpd1.pdf output out\stamped_document.pdf 
56.
 
57.
 
58.
 
59.
REM --------------------------------------- 
60.
REM Abfrage positiv - Endnachricht 
61.
REM --------------------------------------- 
62.
 
63.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
64.
GOTO END 
65.
 
66.
:END 
67.
ECHO. 
68.
ping -n 11 192.168.55.191 > nul 
69.
EXIT 
70.
 

Ich würde mich über Hilfe sehr freuen, Danke im Vorraus
42 Antworten
Mitglied: jehlenco
08.05.2014 um 10:36 Uhr
ich versuche mal den Ablauf und die Details zu schildern:

Microsoft Navision speichert die Lieferscheine in einen festen Ordner, z.B. "Lieferscheine", der Dateiname wäre fortlaufend die Auftragsnummer, z.B.:

#452453
#452454
#452455
#452456

Unser Dpd Programm zum Labeln macht genau das gleiche, es speichert beispielsweise die PDF Dateien in "Labels" und könnte auch die Auftragsnummer verwenden,
also passend zu den Lieferscheinen, daraus ergibt sich wie folgt:

Lieferscheine/452453.pdf & Labels/452453.pdf
Lieferscheine/452454.pdf & Labels/452454.pdf
Lieferscheine/452455.pdf & Labels/452455.pdf
Lieferscheine/452456.pdf & Labels/452456.pdf


Nun würde ich gerne das er via "stamp" Funktion die Labels auf die erste Seite der Lieferscheine macht, das klappt bei einer Datei
mit festen Angaben ja auch bereits. Die Batch soll einfach alle Dateien in den Ordnern erkennen und mit den dazugehörigen Labeln
stamnpen. Anschließend mit dem gleichen Dateinamen in einem Ordner Out oder so speichern und die beiden Dateien in Lieferscheine &
Labels löschen. Am besten wäre wenn die Batch das ganze nochmal in einer TXT als Protokoll speichert um Fehler heruasfinden zu können.

Danke im Vorraus, ich hoffe das ich es einigermaßen verständlich darstellen konnte.
Bitte warten ..
Mitglied: Xaero1982
08.05.2014, aktualisiert um 10:58 Uhr
Hi,

unter der Bedingung, dass die Dateien in Ordner 1 und 2 immer identisch genannt sind:

01.
set temptxt=%temp%\temp.txt 
02.
set ordner1=deliver 
03.
set ordner2=label 
04.
set ordner3=out 
05.
 
06.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
07.
 
08.
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i background %ordner2%\%%i output %ordner3%\stamped_document_%%i 
09.
 
ungetestet

Gruß
Bitte warten ..
Mitglied: jehlenco
08.05.2014, aktualisiert um 11:07 Uhr
Danke schonmal

01.
Error: Failed to open background PDF file: 
02.
label/deliver1.pdf 
03.
No output created.

und das mit allen Dateien.. wieso findet er die nicht?
Bitte warten ..
Mitglied: Xaero1982
08.05.2014 um 11:11 Uhr
Warum ein /?

Was steht denn in der Temporären Datei drin? Nur der Dateiname oder?

Den Ordner musst du ohne \ angeben im oberen Bereich also wirklich nur set %ordner2%=label

Ach ja zum löschen kannst du dann einfach ein

01.
del %ordner1%\*.pdf 
02.
del %ordner2%\*.pdf 
03.
 


hinten dran setzen. Aber erst wenn alles gut gegangen ist. Mit einem >>deleted.log kannst du dann noch protokollieren was gelöscht wurde, wenn du es brauchst.

Gruß
Bitte warten ..
Mitglied: jehlenco
08.05.2014, aktualisiert um 11:16 Uhr
Ich glaube ich bin zu doof, es sieht jetzt wie folgt aus:

01.
@echo off & setlocal 
02.
TITLE Deliver Stamp Programm  
03.
COLOR F0 
04.
ECHO. 
05.
 
06.
 
07.
REM --------------------------------------- 
08.
REM Abfrage ob sie wirklich Labeln moechten 
09.
REM --------------------------------------- 
10.
 
11.
 
12.
 
13.
:LOOP 
14.
SET Choice= 
15.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
16.
 
17.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
18.
 
19.
ECHO. 
20.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
21.
IF /I '%Choice%'=='N' GOTO REJECTED 
22.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
23.
ECHO. 
24.
GOTO Loop 
25.
 
26.
 
27.
REM --------------------------------------- 
28.
REM Abfrage negativ 
29.
REM --------------------------------------- 
30.
 
31.
 
32.
 
33.
:REJECTED 
34.
ECHO Labeln abgebrochen 
35.
ECHO Sie koennen das Programm nun schliessen. 
36.
GOTO END 
37.
 
38.
 
39.
REM --------------------------------------- 
40.
REM Abfrage positiv 
41.
REM --------------------------------------- 
42.
 
43.
 
44.
:ACCEPTED 
45.
SET NEWLINE=^& echo. 
46.
ECHO Beginn des Labelns 
47.
 
48.
 
49.
REM --------------------------------------- 
50.
REM Konvertierung der PDFs 
51.
REM --------------------------------------- 
52.
 
53.
 
54.
 
55.
REM pdftk deliver\deliver1.pdf background label\dpd1.pdf output out\stamped_document.pdf 
56.
 
57.
set temptxt=temp%\temp.txt 
58.
set ordner1=deliver 
59.
set ordner2=label 
60.
set ordner3=out 
61.
 
62.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%/*.pdf"') do echo %%i>>%temptxt% 
63.
 
64.
for /f %%i in (%temptxt%) do pdftk %ordner1%/%%i background %ordner2%/%%i output %ordner3%/stamped_document_%%i 
65.
 
66.
 
67.
 
68.
 
69.
REM --------------------------------------- 
70.
REM Abfrage positiv - Endnachricht 
71.
REM --------------------------------------- 
72.
 
73.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
74.
GOTO END 
75.
 
76.
:END 
77.
ECHO. 
78.
ping -n 11 192.168.55.191 > nul 
79.
EXIT
So läuft es leider nicht, danke für die Hilfe!
Bitte warten ..
Mitglied: Xaero1982
08.05.2014 um 11:20 Uhr
Wieso hast du denn die ganzen \ in / umgedreht bei

dir /b /a "%ordner1%/*.pdf
%ordner1%/%%i
%ordner2%/%%i
%ordner3%/stamped_document_%%i

Gibts dafür einen bestimmten Grund?
Bitte warten ..
Mitglied: jehlenco
08.05.2014 um 11:22 Uhr
Huch, ich wollte das eigentlich wieder kopieren wie Du es geschrieben hast :D *peinlich* Da es nicht funktioniert hat,
dachte ich drehe ich die mal um um zu sehen ob es daran liegt ;)

Eine Idee?
Bitte warten ..
Mitglied: Xaero1982
08.05.2014 um 11:26 Uhr
Mit:

01.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (echo %ordner1%\%%i background %ordner2%\%%i output %ordner3%\stamped_document_%%i>>%temp%\success.log) else (echo %ordner2%\%%i does not exists>>%temp%\error.log)
Kannst du dir noch Logdateien anlegen.
Er prüft also, ob der Dateiname, der in der temporären Datei steht, welcher aus Ordner1 stammt auch in Ordner2 vorhanden ist. Wenn ja schreibt er dies in die "success.log". Wenn die Datei mit dem Namen nicht vorhanden ist schreibt er es in die "error.log"
Bitte warten ..
Mitglied: Xaero1982
LÖSUNG 08.05.2014, aktualisiert um 19:56 Uhr
Noch mal als ganzes für dich

01.
@echo off & setlocal 
02.
set temptxt=%temp%\temp.txt 
03.
set ordner1=deliver 
04.
set ordner2=label 
05.
set ordner3=out 
06.
 
07.
TITLE Deliver Stamp Programm  
08.
COLOR F0 
09.
ECHO. 
10.
 
11.
 
12.
REM --------------------------------------- 
13.
REM Abfrage ob sie wirklich Labeln moechten 
14.
REM --------------------------------------- 
15.
 
16.
 
17.
 
18.
:LOOP 
19.
SET Choice= 
20.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
21.
 
22.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
23.
 
24.
ECHO. 
25.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
26.
IF /I '%Choice%'=='N' GOTO REJECTED 
27.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
28.
ECHO. 
29.
GOTO Loop 
30.
 
31.
 
32.
REM --------------------------------------- 
33.
REM Abfrage negativ 
34.
REM --------------------------------------- 
35.
 
36.
 
37.
 
38.
:REJECTED 
39.
ECHO Labeln abgebrochen 
40.
ECHO Sie koennen das Programm nun schliessen. 
41.
GOTO END 
42.
 
43.
 
44.
REM --------------------------------------- 
45.
REM Abfrage positiv 
46.
REM --------------------------------------- 
47.
 
48.
 
49.
:ACCEPTED 
50.
SET NEWLINE=^& echo. 
51.
ECHO Beginn des Labelns 
52.
 
53.
 
54.
REM --------------------------------------- 
55.
REM Konvertierung der PDFs 
56.
REM --------------------------------------- 
57.
 
58.
 
59.
 
60.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
61.
 
62.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (echo %ordner1%\%%i background %ordner2%\%%i output %ordner3%\stamped_document_%%i>>%temp%\success.log) else (echo %ordner2%\%%i does not exists>>%temp%\error.log) 
63.
 
64.
 
65.
 
66.
 
67.
REM --------------------------------------- 
68.
REM Abfrage positiv - Endnachricht 
69.
REM --------------------------------------- 
70.
 
71.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
72.
 
73.
REM DEL %ordner1%\*.pdf >> %temp%\%ordner1%_%date%.log 
74.
REM DEL %ordner2%\*.pdf >> %temp%\%ordner2%_%date%.log 
75.
 
76.
GOTO END 
77.
 
78.
:END 
79.
ECHO. 
80.
ping -n 11 192.168.55.191 > nul 
81.
EXIT 
82.
 
Bitte warten ..
Mitglied: Xaero1982
08.05.2014 um 11:31 Uhr
Zitat von jehlenco:

Huch, ich wollte das eigentlich wieder kopieren wie Du es geschrieben hast :D *peinlich* Da es nicht funktioniert hat,
dachte ich drehe ich die mal um um zu sehen ob es daran liegt ;)

Eine Idee?

Wie ich was wo geschrieben habe? Also von einem / schrieb ich nichts...

Und das \ benutzt du unter Windows bei Unterordnern...

Ordner\Unterordner\Unterunterordner\bla.txt

Gruß
Bitte warten ..
Mitglied: jehlenco
08.05.2014 um 12:15 Uhr
Also das Script läuft jetzt aber es passiert leider nichts.
temp.txt wird erstellt mit folgendem Inhalt:

deliver1.pdf
deliver2.pdf


aber die Dateien werden nicht in den Out gespeichert und in den Ordnern deliver und label wurden die PDF's nicht gelöscht
Bitte warten ..
Mitglied: Xaero1982
08.05.2014, aktualisiert um 12:25 Uhr
Du hast aber schon das echo ersetzt und das REM vor dem löschen entfernt?

for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (echo %ordner1%\%%i background %ordner2%\%%i output %ordner3%\stamped_document_%%i>>%temp%\success.log) else (echo %ordner2%\%%i does not exists>>%temp%\error.log)

und

REM DEL %ordner1%\*.pdf >> %temp%\%ordner1%_%date%.log
REM DEL %ordner2%\*.pdf >> %temp%\%ordner2%_%date%.log

01.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\%%i background %ordner2%\%%i output %ordner3%\stamped_document_%%i>>%temp%\success.log) else (echo %ordner2%\%%i does not exists>>%temp%\error.log)  
02.
 
03.
und: 
04.
 
05.
DEL %ordner1%\*.pdf >> %temp%\%ordner1%_%date%.log  
06.
DEL %ordner2%\*.pdf >> %temp%\%ordner2%_%date%.log  
07.
 
Das wird bei solchen Sachen hier generell so gemacht, damit erst mal getestet werden kann. Sonst führt er DEL aus und das wars dann mit den Daten wenn man diese nicht gesichert hat.

Nochwas: Wenn du eine halbwegs sichere Protokollierung haben willst solltest du die Logdateien auch in einem anderen Ordner sichern, als in %Temp% und bei allen vielleicht nocht _%date% dran hängen, damit man auch weiß von wann das ist.

Gruß
Bitte warten ..
Mitglied: jehlenco
08.05.2014 um 12:39 Uhr
Zitat von Xaero1982:

Du hast aber schon das echo ersetzt und das REM vor dem löschen entfernt?

for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (echo %ordner1%\%%i background %ordner2%\%%i output
%ordner3%\stamped_document_%%i>>%temp%\success.log) else (echo %ordner2%\%%i does not exists>>%temp%\error.log)

und

REM DEL %ordner1%\*.pdf >> %temp%\%ordner1%_%date%.log
REM DEL %ordner2%\*.pdf >> %temp%\%ordner2%_%date%.log

Das wird bei solchen Sachen hier generell so gemacht, damit erst mal getestet werden kann.

Okay das wusste ich nicht Danke für die Information :D das mit dem REM hab ich verstanden, aber was genau muss ich mit dem echo machen? *werd rot* Danke schonmal für sooo viel engargement =)
Bitte warten ..
Mitglied: jehlenco
08.05.2014 um 12:50 Uhr
ahh ok das echo durch "pdftk" ersetzen, aber irgendwie geht das immernoch nicht
Bitte warten ..
Mitglied: jehlenco
08.05.2014 um 12:53 Uhr
Zitat von jehlenco:

ahh ok das echo durch "pdftk" ersetzen, aber irgendwie geht das immernoch nicht

Hat geklappt, habe den Fehler gefunden! vielen vielen Dank!!!
Bitte warten ..
Mitglied: Xaero1982
08.05.2014 um 13:15 Uhr
Hi,

lass uns mal bitte im Beitrag bleiben und nicht per PN

Stand ist also, dass es erst mal funktioniert richtig?

Nun willst du, wie ich der PN entnehme die erstellten Dateien drucken.

01.
set printtxt=%temp%\print.txt 
02.
 
03.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
04.
 
05.
for /f %%i in (%printtxt%) do print %ordner3%\%%i 
06.
 
Damit solltest du die Dateien drucken können. mit print /d:gerätename kannst du noch einen anderen Drucker angeben, sonst ist es der Standarddrucker.

Das was in den "Logdateien" steht kannst du erweitern in dem du die echo's erweiterst.

z.b.
01.
echo %ordner2%\%%i does not exists>>error.log
Alles was hinter echo steht landet dann in der error.log. Also alles was du in der Logdatei haben willst musst du zwischen echo und >> schreiben.

Willst du denn irgendwas bestimmtes geloggt haben?

Gruß
Bitte warten ..
Mitglied: jehlenco
08.05.2014 um 13:28 Uhr
Also ich habe das Script nun ausführlich getestet und musste dann doch feststellen das er immer nach einer Datei hängen bleibt, im CMD Fenster steht dann lediglich:

01.
Beginn des labelns
aber er macht nicht weiter.... wie verhext...ich dachte schon wir hättens..

was das drucken betrifft, werde ich gleich mal einbinden uns versuchen

Die Log wäre folgendermaßen super:

log.txt
01.
Auftrag45635.pdf erfolgreich erstellt am 08-05-2014 13:26 deliver/Auftrag45635.pdf : label/Auftrag45635.pdf  
02.
Cachedateien erfolgreich gelöscht. 
03.
 
04.
Auftrag45636.pdf error am 08-05-2014 13:26 deliver/Auftrag45636.pdf : label/Auftrag45636.pdf  
05.
Cachedateien behalten
.

irgendwie sowas in der richtung wäre richtig super..

Danke
Bitte warten ..
Mitglied: Xaero1982
08.05.2014, aktualisiert um 13:57 Uhr
Ich muss jetzt erst mal weg... schaue ich mir später an und teste es dann mal.

Die logdatei kannst du dir selbst anpassen.

01.
echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i  && echo Cachedateien erfolgreich gelöscht.>>log.txt 
02.
 
03.
echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i  && echo Cachedateien behalten.>>log.txt
Was nun aber nicht stimmt, weil er die Cachedateien nicht behält. Dazu später....

Gruß
Bitte warten ..
Mitglied: Xaero1982
LÖSUNG 09.05.2014, aktualisiert um 08:06 Uhr
Also so sollte es gehen:

01.
@echo off & setlocal 
02.
 
03.
 
04.
set temptxt=temp.txt 
05.
set tempordner1=%temp%\tempordner1.txt 
06.
set tempordner2=%temp%\tempordner2.txt 
07.
set ordner1=deliver 
08.
set ordner2=label 
09.
set ordner3=out 
10.
set success=log.txt 
11.
set printtxt=%temp%\print.txt 
12.
 
13.
TITLE Deliver Stamp Programm  
14.
COLOR F0 
15.
ECHO. 
16.
 
17.
 
18.
REM --------------------------------------- 
19.
REM Abfrage ob sie wirklich Labeln moechten 
20.
REM --------------------------------------- 
21.
 
22.
 
23.
 
24.
:LOOP 
25.
SET Choice= 
26.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
27.
 
28.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
29.
 
30.
ECHO. 
31.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
32.
IF /I '%Choice%'=='N' GOTO REJECTED 
33.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
34.
ECHO. 
35.
GOTO Loop 
36.
 
37.
 
38.
REM --------------------------------------- 
39.
REM Abfrage negativ 
40.
REM --------------------------------------- 
41.
 
42.
 
43.
 
44.
:REJECTED 
45.
ECHO Labeln abgebrochen 
46.
ECHO Sie koennen das Programm nun schliessen. 
47.
GOTO END 
48.
 
49.
 
50.
REM --------------------------------------- 
51.
REM Abfrage positiv 
52.
REM --------------------------------------- 
53.
 
54.
 
55.
:ACCEPTED 
56.
SET NEWLINE=^& echo. 
57.
ECHO Beginn des Labelns 
58.
 
59.
 
60.
REM --------------------------------------- 
61.
REM Konvertierung der PDFs 
62.
REM --------------------------------------- 
63.
 
64.
 
65.
 
66.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
67.
 
68.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\%%i background %ordner2%\%%i output %ordner3%\stamped_document_%%i && echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien erfolgreich gelöscht.>>%success%) else (echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien behalten.>>%success%) 
69.
 
70.
 
71.
 
72.
 
73.
REM --------------------------------------- 
74.
REM Abfrage positiv - Endnachricht 
75.
REM --------------------------------------- 
76.
 
77.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
78.
 
79.
 
80.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1% 
81.
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2% 
82.
 
83.
REM for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i && echo Die Dateien %ordner1%\%%a und %ordner2%\%%i wurden am %date% um %time% gelöscht>>%success% 
84.
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i 
85.
 
86.
 
87.
88.
 
89.
GOTO END 
90.
 
91.
:END 
92.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
93.
for /f %%i in (%printtxt%) do print %ordner3%\%%i 
94.
 
95.
del %temptxt% 
96.
del %printtxt%  
97.
del %tempordner1% 
98.
del %tempordner2% 
99.
ECHO. 
100.
REM ping -n 11 192.168.55.191 > nul 
101.
REM EXIT 
102.
 
Zeile 80/81: Hier erstelle ich temporäre Dateien in die ich den Inhalt von Ordner 1 und Ordner 2 schreibe.
Zeile 83 bzw. 84: Hier vergleiche ich den Inhalt der beiden Dateien miteinander. Wenn die Dateien in beiden Ordnern vorhanden sind werden die Dateien gelöscht aus Ordner 1 und Ordner 2. Wenn nicht bleibt die Datei die in einem der anderen Ordner nicht vorhanden ist erhalten.
Du kannst hier entweder Zeile 83 oder 84 benutzen. In Zeile 83 wird noch was in die Logdatei geschrieben, was aber letztlich schon aus Zeile 67 hervorgeht.

Edit: In Zeile 92 und 93 erfolgt der Ausdruck der Dateien aus Ordner 3.

In Zeile 95 - 98 lösche ich diese temporären Dateien wieder.

Hat bei mir alles geklappt wobei ich mich frage was du da für PDFs hast die du übereinander legst Bei mir wird immer nur die erste Seite auf alle Seiten der anderen PDF gelegt, aber nun gut .)

Gruß und Gn8
Bitte warten ..
Mitglied: jehlenco
09.05.2014 um 07:02 Uhr
Es funktioniert, tausend Dank. Ich weiß gar nicht wie ich mich revangieren kann. Danke!
Bitte warten ..
Mitglied: jehlenco
09.05.2014, aktualisiert um 07:49 Uhr
Eine Sache noch, könntest Du mir das mit dem Drucken noch einbinden?

Und er darf es lediglich auf die erste Seite packen...
Bitte warten ..
Mitglied: Xaero1982
09.05.2014, aktualisiert um 08:21 Uhr
Moin,

ich hab das oben edititert mit dem Drucken.

Allerdings wird das nichts mit nur auf die erste Seite packen.

http://www.pdflabs.com/docs/pdftk-man-page/
Lies dir mal die Beschreibung von background durch...

In der Gui: http://www.doku.info/doku_article_278.html geht das leider...

Gruß
edit: Was du vielleicht machen kannst ist dann: PDFs aus Ordner A zerlegen - also die erste Seite abtrennen und dann den Background einsetzen und dann wieder zusammenbauen... wenn ichs schaffe schau ich mir das heute abend an oder du dir
Bitte warten ..
Mitglied: jehlenco
09.05.2014, aktualisiert um 08:26 Uhr
*EDIT **Guten Morgen ;)

Es wird gesagt das es gedruckt wird, leider kommt aus dem Drucker nichts. Muss man vllt sowas in der Art hinzufügen:

01.
start /B “Drucken” “C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe” /t %%R

???

Es muss doch einen Weg geben wie das Label lediglich auf der ersten Seite erscheint? :/

Danke schonmal
Bitte warten ..
Mitglied: Xaero1982
09.05.2014, aktualisiert um 08:34 Uhr
Evtl.

01.
for /f %%i in (%printtxt%) do start "" "D:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t "%%i" "DRUCKERNAME" "DRUCKERNAME" IP_XXXXXXX
Ungetestet... Pfade und Druckernamen / IP musst du anpassen.

Edit: Das setzt du dann in Zeile 93 ein
Edit2: Bin weg
Bitte warten ..
Mitglied: Xaero1982
09.05.2014 um 10:50 Uhr
Also das ist nicht so einfach. Du kannst nicht so viele Druckaufträge in so kurzer Zeit auf den Drucker jagen... ich meine wir reden hier von Bruchteilen von Sekunden.
Ich habs jetzt nur mal mit dem PDF Creator getestet:

01.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
02.
for /f %%i in (%printtxt%) do start /B "Print" "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t %ordner3%\%%i "PDFCreator" && ping -n 30 127.0.0.1 && Taskkill /IM AcroRd32.exe
Der Haken an der Geschichte ist, dass der Adobe 11 sich nicht schließt nach dem Drucken. Er schließt ausschließlich die Datei die gedruckt wurde. Also muss ich den Reader anschließend via Taskkill schließen. D.h. du musst das mal austesten wann dein Drucker den Druckauftrag angenommen hat. Dementsprechend kannst du den "Counter" der Pings setzen. Mit 30 hats mit dem Reader gut geklappt. Kann sein, dass ein normaler Drucker schneller ist.

Das andere Problem... mal sehen, ob ich darauf noch Bock hab... :/

Gruß
Bitte warten ..
Mitglied: jehlenco
09.05.2014, aktualisiert um 11:17 Uhr
Du bist ja wieder da

Ich habe eben versucht allein weiter zu kommen und es mit einem 2. extra Script versucht zu realisieren, siehe: http://www.administrator.de/forum/-237616.html

ich versuche mal das was Du vorbereitet hast einzubinden und hoffe das es funkt, ich hab schon ein ganz schlechtes Gewissen weil du schon so viel gemacht hast. Ich würde das fertig gedruckte Dokument gern noch verschieben siehe den obigen Beitrag...

Kann man nicht die Aufträge Zeitversetzt zum Drucker scheuchen? oder sagen Datei 1-30 und dann soll er mal ein bisschen rumpingen und anschließend die nächsten? Es würden so jeden Morgen 200-400 Dateien zu drucken sein.

Wegen der Sache mit der ersten Seite, du würdest mir so helfen, mein Held bist Du zwar schon aber ich wäre dir echt dankbar!
Ich habe den Entwickler von PDFtk auch schon angeschrieben.

Danke nochmals

Gruß


*EDIT*

Habe gerade mit dem Lager gesprochen und wie es aussieht kennt unser armer Drucker das nicht anders, bisher werden auch über 200 jeden Morgen von dem Drucker auf einmal verarbeitet....
Bitte warten ..
Mitglied: Xaero1982
09.05.2014, aktualisiert um 12:10 Uhr
Also...obiges letztes komplettes script: Zeile 66-68 ersetzen mit:

01.
 
02.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
03.
 
04.
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i cat 1 output %ordner1%\p1_%%i && pdftk %ordner1%\%%i cat 2 3-end output %ordner1%\pr_%%i 
05.
 
06.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\p1_%%i background %ordner2%\%%i output %ordner3%\temp_stamped_document_%%i && echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien erfolgreich gelöscht.>>%success%) else (echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien behalten.>>%success%) 
07.
 
08.
for /f %%i in (%temptxt%) do pdftk %ordner3%\temp_stamped_document_%%i %ordner1%\pr_%%i cat output %ordner3%\stamped_document_%%i && del %ordner3%\temp_stamped_document_%%i 
09.
 
Musst du aber mal ausführlich testen, weil ich nicht weiß wie deine pdfs aussehen.

Was mache ich?:
Ich splitte die pdfs in Ordner 1. Ein mal die erste Seite und den Rest. Dann pack ich auf Seite 1 den Background der pdf aus Ordner 2 und gebe das als temp_stamped_document_%%i in Ordner 3 aus.
Anschließend füge ich den rest der pdf aus Ordner 1 und die temporäre pdf aus Ordner 3 zusammen zum Ergebnis.

Gruß
edit: *EDIT*
Habe gerade mit dem Lager gesprochen und wie es aussieht kennt unser armer Drucker das nicht anders, bisher werden auch über 200 jeden Morgen von dem Drucker auf einmal verarbeitet....

In welcher Geschwindigkeit? Wir reden hier ja nicht von manuellen Zugriffen auf den Drucker. Hier werden kA 200 Aufträge in EINER Sekunde an den Drucker geschickt ... das wird nicht gehen.
Bitte warten ..
Mitglied: jehlenco
09.05.2014 um 12:15 Uhr
Zitat von Xaero1982:
In welcher Geschwindigkeit? Wir reden hier ja nicht von manuellen Zugriffen auf den Drucker. Hier werden kA 200 Aufträge in
EINER Sekunde an den Drucker geschickt ... das wird nicht gehen.


Das läuft über Microsoft Navision und wird auch alles an den Drucker übergeben auf einmal.

ich baue das eben ein und teste das Script mal.
Bezüglich des Druckens das er nachdem er es erfolgreich gedruckt hat die Datei verschiebt *lieb guck* würdest Du mir da nochmal helfen?

Danke
Bitte warten ..
Mitglied: Xaero1982
09.05.2014 um 12:17 Uhr
Ok...musst du halt testen, ansonsten halt einen ping dazwischen.

Dazu beantworte doch erst mal die beiden Posts in dem Beitrag...

mit ohne "" und Ordner vorhanden?

Gruß
Bitte warten ..
Mitglied: jehlenco
09.05.2014, aktualisiert um 12:28 Uhr
Also das Script haut div Fehler raus, siehe: http://s14.directupload.net/images/140509/mc4zjtk9.jpg

Grüße

*EDIT* Und tatsächlich die 2. Seite der PDF wird in der Ausgegebenen Datei nicht mehr angezeigt.
Das Drucken geht leider auch nicht, ich verliere den Überblick .. :D Vllt nochmal eine ganze Übersicht des Scripts.
Bitte warten ..
Mitglied: Xaero1982
09.05.2014, aktualisiert um 12:38 Uhr
Okay...habs vermuted. Ich weiß leider nicht wie deine PDFs aussehen. Einseitige, zweiseite oder mehrseitige.
Dann müsste man die Seiten zählen und in abhängigkeit davon splitten...

Was meinst du mit dem Edit? Welche zweite Seite? Du meinst die Seite 1 von der Datei aus Ordner 2 wird nicht auf alle Seiten der Datei aus Ordner 1 "gedruckt" oder?
Das mit dem Drucken: Du hast kein Ping drin oder?

Hier noch mal als Ganzes:

01.
@echo off & setlocal 
02.
 
03.
 
04.
set temptxt=temp.txt 
05.
set tempordner1=%temp%\tempordner1.txt 
06.
set tempordner2=%temp%\tempordner2.txt 
07.
set ordner1=deliver 
08.
set ordner2=label 
09.
set ordner3=out 
10.
set success=log.txt 
11.
set printtxt=%temp%\print.txt 
12.
set printer="NAME DES DRUCKERS" 
13.
 
14.
TITLE Deliver Stamp Programm  
15.
COLOR F0 
16.
ECHO. 
17.
 
18.
 
19.
REM --------------------------------------- 
20.
REM Abfrage ob sie wirklich Labeln moechten 
21.
REM --------------------------------------- 
22.
 
23.
 
24.
 
25.
:LOOP 
26.
SET Choice= 
27.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
28.
 
29.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
30.
 
31.
ECHO. 
32.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
33.
IF /I '%Choice%'=='N' GOTO REJECTED 
34.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
35.
ECHO. 
36.
GOTO Loop 
37.
 
38.
 
39.
REM --------------------------------------- 
40.
REM Abfrage negativ 
41.
REM --------------------------------------- 
42.
 
43.
 
44.
 
45.
:REJECTED 
46.
ECHO Labeln abgebrochen 
47.
ECHO Sie koennen das Programm nun schliessen. 
48.
GOTO END 
49.
 
50.
 
51.
REM --------------------------------------- 
52.
REM Abfrage positiv 
53.
REM --------------------------------------- 
54.
 
55.
 
56.
:ACCEPTED 
57.
SET NEWLINE=^& echo. 
58.
ECHO Beginn des Labelns 
59.
 
60.
 
61.
REM --------------------------------------- 
62.
REM Konvertierung der PDFs 
63.
REM --------------------------------------- 
64.
 
65.
 
66.
 
67.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
68.
 
69.
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i cat 1 output %ordner1%\p1_%%i && pdftk %ordner1%\%%i cat 2 3-end output %ordner1%\pr_%%i 
70.
 
71.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\p1_%%i background %ordner2%\%%i output %ordner3%\temp_stamped_document_%%i && echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien erfolgreich gelöscht.>>%success%) else (echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien behalten.>>%success%) 
72.
 
73.
for /f %%i in (%temptxt%) do pdftk %ordner3%\temp_stamped_document_%%i %ordner1%\pr_%%i cat output %ordner3%\stamped_document_%%i && del %ordner3%\temp_stamped_document_%%i 
74.
 
75.
 
76.
 
77.
 
78.
REM --------------------------------------- 
79.
REM Abfrage positiv - Endnachricht 
80.
REM --------------------------------------- 
81.
 
82.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
83.
@echo on 
84.
 
85.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1% 
86.
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2% 
87.
 
88.
REM for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i && echo Die Dateien %ordner1%\%%a und  
89.
 
90.
%ordner2%\%%i wurden am %date% um %time% gelöscht>>%success% 
91.
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i  
92.
 
93.
 
94.
95.
 
96.
GOTO END 
97.
 
98.
:END 
99.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
100.
for /f %%i in (%printtxt%) do start /B "Print" "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t %ordner3%\%%i %printer% && ping -n 30 127.0.0.1 && Taskkill /IM AcroRd32.exe 
101.
 
102.
del %temptxt% 
103.
del %printtxt%  
104.
del %tempordner1% 
105.
del %tempordner2% 
106.
ECHO. 
107.
REM ping -n 11 192.168.55.191 > nul 
108.
REM EXIT
Bitte warten ..
Mitglied: jehlenco
09.05.2014 um 12:44 Uhr
Ist es okay wenn ich dir mal kurz den Ordner packe, hochlade und dir das PW per PN schicke?
Er erstellt jetzt eine Datei im deliver Ordner, das soll er ja nicht, dazu kommt das er Fehler beim Drucker auswirft und die ganze Zeit den localhost anpingt...

Herjemine :D
Bitte warten ..
Mitglied: Xaero1982
09.05.2014, aktualisiert um 12:55 Uhr
01.
@echo off & setlocal 
02.
 
03.
 
04.
set temptxt=temp.txt 
05.
set tempordner1=%temp%\tempordner1.txt 
06.
set tempordner2=%temp%\tempordner2.txt 
07.
set ordner1=deliver 
08.
set ordner2=label 
09.
set ordner3=out 
10.
set success=log.txt 
11.
set printtxt=%temp%\print.txt 
12.
set printer="NAME DEINES DRUCKERS" 
13.
 
14.
TITLE Deliver Stamp Programm  
15.
COLOR F0 
16.
ECHO. 
17.
 
18.
 
19.
REM --------------------------------------- 
20.
REM Abfrage ob sie wirklich Labeln moechten 
21.
REM --------------------------------------- 
22.
 
23.
 
24.
 
25.
:LOOP 
26.
SET Choice= 
27.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
28.
 
29.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
30.
 
31.
ECHO. 
32.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
33.
IF /I '%Choice%'=='N' GOTO REJECTED 
34.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
35.
ECHO. 
36.
GOTO Loop 
37.
 
38.
 
39.
REM --------------------------------------- 
40.
REM Abfrage negativ 
41.
REM --------------------------------------- 
42.
 
43.
 
44.
 
45.
:REJECTED 
46.
ECHO Labeln abgebrochen 
47.
ECHO Sie koennen das Programm nun schliessen. 
48.
GOTO END 
49.
 
50.
 
51.
REM --------------------------------------- 
52.
REM Abfrage positiv 
53.
REM --------------------------------------- 
54.
 
55.
 
56.
:ACCEPTED 
57.
SET NEWLINE=^& echo. 
58.
ECHO Beginn des Labelns 
59.
 
60.
 
61.
REM --------------------------------------- 
62.
REM Konvertierung der PDFs 
63.
REM --------------------------------------- 
64.
 
65.
 
66.
 
67.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
68.
 
69.
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i cat 1 output %ordner1%\p1_%%i  
70.
 
71.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\p1_%%i background %ordner2%\%%i output %ordner3%\temp_stamped_document_%%i && echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien erfolgreich gelöscht.>>%success%) else (echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien behalten.>>%success%) 
72.
 
73.
for /f %%i in (%temptxt%) do pdftk A=%ordner3%\temp_stamped_document_%%i B=%ordner1%\%%i cat A1 B2-end output %ordner3%\stamped_document_%%i && del %ordner3%\temp_stamped_document_%%i 
74.
 
75.
 
76.
 
77.
 
78.
REM --------------------------------------- 
79.
REM Abfrage positiv - Endnachricht 
80.
REM --------------------------------------- 
81.
 
82.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
83.
@echo on 
84.
 
85.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1% 
86.
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2% 
87.
 
88.
REM for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i && echo Die Dateien %ordner1%\%%a und %ordner2%\%%i wurden am %date% um %time% gelöscht>>%success% 
89.
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i  
90.
 
91.
 
92.
93.
 
94.
GOTO END 
95.
 
96.
:END 
97.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
98.
REM for /f %%i in (%printtxt%) do start /B "Print" "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t %ordner3%\%%i %printer% && ping -n 30 127.0.0.1 && Taskkill /IM AcroRd32.exe 
99.
 
100.
del %temptxt% 
101.
del %printtxt%  
102.
del %tempordner1% 
103.
del %tempordner2% 
104.
ECHO. 
105.
REM ping -n 11 192.168.55.191 > nul 
106.
REM EXIT
Versuch das noch mal ... das Drucken hab ich erst mal rausgenommen.

Ich hab das Splitten der Datei noch mal angepasst...

Mach das...

Gruß
Bitte warten ..
Mitglied: jehlenco
09.05.2014 um 13:18 Uhr
Jetzt erstellt er im Ordner out:
temp_stamped_document_dd.pdf

Und löscht label und deliver.

Dafür erstellt er in deliver:
p1_dd.pdf

Komisch.. wie gesagt ich kann dir auch kurz das ganze als rar schicken?

Der Entwickler von PDFtk hat sich auch gemeldet und folgendes geantwortet:

If you take PDF B, add a blank page at its end, then use pdftk's multistamp operation (instead of stamp), then you should get the results you want. What happens is that pdftk repeats the final page of the stamp PDF during multistamp, after it runs out of stamp pages. If that final page is blank, then the result is what you describe.

Best Regards-

Sid Steward
PDF Labs




Danke Dir
Bitte warten ..
Mitglied: Xaero1982
09.05.2014 um 13:32 Uhr
Ich glaube du kannst dem nicht mehr folgen was ich da mache

Ja mach mal, aber ich bin auch erst mal unterwegs... vielleicht nachher oder morgen. Muss ich sehen.
Bitte warten ..
Mitglied: jehlenco
09.05.2014 um 13:37 Uhr
Ich denke auch :D Vielen Vielen Dank!

Schönes Wochenende
Bitte warten ..
Mitglied: Xaero1982
09.05.2014, aktualisiert 11.05.2014
So Schnauze voll:

01.
@echo off & setlocal 
02.
 
03.
 
04.
set temptxt=temp.txt 
05.
set tempordner1=%temp%\tempordner1.txt 
06.
set tempordner2=%temp%\tempordner2.txt 
07.
set ordner1=deliver 
08.
set ordner2=label 
09.
set ordner3=out 
10.
set success=log\log.txt 
11.
set printtxt=%temp%\print.txt 
12.
set printer="NAME DEINES DRUCKERS" 
13.
 
14.
TITLE Deliver Stamp Programm  
15.
COLOR F0 
16.
ECHO. 
17.
 
18.
 
19.
REM --------------------------------------- 
20.
REM Abfrage ob sie wirklich Labeln moechten 
21.
REM --------------------------------------- 
22.
 
23.
 
24.
 
25.
:LOOP 
26.
SET Choice= 
27.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
28.
 
29.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
30.
 
31.
ECHO. 
32.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
33.
IF /I '%Choice%'=='N' GOTO REJECTED 
34.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
35.
ECHO. 
36.
GOTO Loop 
37.
 
38.
 
39.
REM --------------------------------------- 
40.
REM Abfrage negativ 
41.
REM --------------------------------------- 
42.
 
43.
 
44.
 
45.
:REJECTED 
46.
ECHO Labeln abgebrochen 
47.
ECHO Sie koennen das Programm nun schliessen. 
48.
GOTO END 
49.
 
50.
 
51.
REM --------------------------------------- 
52.
REM Abfrage positiv 
53.
REM --------------------------------------- 
54.
 
55.
 
56.
:ACCEPTED 
57.
SET NEWLINE=^& echo. 
58.
ECHO Beginn des Labelns 
59.
 
60.
 
61.
REM --------------------------------------- 
62.
REM Konvertierung der PDFs 
63.
REM --------------------------------------- 
64.
 
65.
 
66.
 
67.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
68.
 
69.
Echo %temptxt% erstellt mit den in %ordner1% enthaltenen PDF Dateien 
70.
REM ---------------------------------------- 
71.
 
72.
 
73.
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i dump_data output %ordner1%\%%i.txt 
74.
 
75.
Echo Für jede Datei in %temptxt% einen Datadump ausgeführt und in einer Datei gespeichert 
76.
REM ---------------------------------------- 
77.
 
78.
 
79.
for /f %%x in (%temptxt%) do for /f "tokens=1* delims== " %%h in ('findstr /ib "NumberOfPages" %ordner1%\%%x.txt') do if %%i GTR 1 (pdftk %ordner1%\%%x cat 1 output %ordner1%\p1_%%x) else (if %%i == 1 copy %ordner1%\%%x %ordner1%\p1_%%x) 
80.
 
81.
Echo Datadump-Dateien durchsucht nach "NumberOfPages". Wenn die PDF mehr als eine Seite hat wird die Datei gesplitted, sonst nur kopiert wegen dem gleichen Namen 
82.
REM ---------------------------------------- 
83.
 
84.
 
85.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\p1_%%i background %ordner2%\%%i output %ordner3%\temp_stamped_document_%%i && echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien erfolgreich gelöscht.>>%success%) else (echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien behalten.>>%success%) 
86.
 
87.
Echo Wenn die Datei aus %ordner1% in %ordner2% existiert sollen diese Dateien mit pdftk in eine temporäre Datei zusammengeführt werden und ein Eintrag in der Datei %susccess% erstellt werden. 
88.
REM ---------------------------------------- 
89.
 
90.
 
91.
for /f %%x in (%temptxt%) do for /f "tokens=1* delims== " %%h in ('findstr /ib "NumberOfPages" %ordner1%\%%x.txt') do if %%i GTR 1 (pdftk A=%ordner3%\temp_stamped_document_%%x B=%ordner1%\%%x cat A1 B2-end output %ordner3%\stamped_document_%%x && del %ordner3%\temp_stamped_document_%%x) else (ren %ordner3%\temp_stamped_document_%%x stamped_document_%%x) 
92.
 
93.
Echo Hier wird erneut die Anzahl der Seiten geprüft. Wenn diese größer als 1 ist wird mit pdftk die temporäre Datei, die aus der Datei aus %ordner1% und der Datei aus %ordner2% besteht, mit dem Rest, also ab Seite 2 der Datei aus %ordner1% zusammen geführt. Wenn die Seitenzahl 1 ist wird die temporäre Datei lediglich umbenannt. 
94.
REM ---------------------------------------- 
95.
 
96.
 
97.
Echo. 
98.
 
99.
 
100.
REM --------------------------------------- 
101.
REM Abfrage positiv - Endnachricht 
102.
REM --------------------------------------- 
103.
 
104.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
105.
 
106.
 
107.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1% 
108.
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2% 
109.
 
110.
REM for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i && del %ordner1%\p1_%%a && echo Die Dateien %ordner1%\%%a und %ordner2%\%%i wurden am %date% um %time% gelöscht>>%success% 
111.
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i (del %ordner1%\%%a && del %ordner2%\%%i)  
112.
 
113.
 
114.
115.
 
116.
GOTO END 
117.
 
118.
:END 
119.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
120.
for /f %%i in (%printtxt%) do start /B "Print" "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t %ordner3%\%%i %printer% && ping -n 30 127.0.0.1 && Taskkill /IM AcroRd32.exe 
121.
 
122.
del %ordner1%\p1_*.pdf 
123.
del %ordner1%\*.txt 
124.
del %temptxt% 
125.
del %printtxt%  
126.
del %tempordner1% 
127.
del %tempordner2% 
128.
md print_done\%date% 
129.
move "%ordner3%\*.*" "%ordner3%\print_done\%date%\" 
130.
ECHO.
In Zeile 12 musst du den Druckernamen angeben.

In Zeile 120 kannst du die Verzögerung über die Pings steuern, damit der Drucker das auch mitbekommt.

Ich vermute mal, dass es der eine oder andere hier eleganter hinbekommt...

Schönes WE

Gruß
Bitte warten ..
Mitglied: jehlenco
12.05.2014 um 07:07 Uhr
Guten Morgen, hoffe das Wochenende ist erfolgreich überstanden

Ich habe eben das Script angetestet, funktioniert super bis auf das der Lieferschein mit 2 Seiten nicht mit dem Label versehen wird und nicht gedruckt wird :/
Verschoben werden keine Lieferscheine in Print_done, ein Ordner mit dem Datum im Print Done wird aber erstellt. Kann man das noch fixxen?

Danke im Vorraus

Gruß
Bitte warten ..
Mitglied: Xaero1982
12.05.2014, aktualisiert um 10:16 Uhr
Moin,

also bei mir funktioniert das labeln auch mit dem Lieferschein mit zwei Seiten ohne Probleme.

Drucken tut er es nicht, weil du sicher nicht den Druckernamen eingetragen hast in Zeile 12. Es kann sein, dass du das noch anpassen musst.

Die Zeile mit dem Verschieben: Zeile 129
Ersetze das bitte mit:

01.
move %ordner3%\*.* print_done\%date%
Klappt bei mir alles problemlos.

Wenn ich den PDF Creator als Drucker einstelle und dort auf automatisches Speichern stelle erstellt er mir die "Ausdrucke ak PDF Dateien" problemlos.

Wie gesagt du musst dort sicher eine Verzögerung einbauen über "pings", weil der Drucker sicher nicht so viele Aufträge verarbeiten kann.

Gruß
edit: Ich lad es dir mal hoch und schicks dir per pn
Bitte warten ..
Mitglied: jehlenco
12.05.2014 um 10:17 Uhr
Den Drucker hatte ich eingetragen, wäre super wenn Du es mir nochmal komplett schicken würdest ;)

Ich probiere es dann nochmals umgehend
Bitte warten ..
Mitglied: Xaero1982
12.05.2014 um 10:25 Uhr
Es kann mit dem Drucken sein, dass du da noch einige Anpassungen machen musst.

Und zwar wie folgt:

01.
set drivername="Treibername des Druckers - findet man in den Druckereigenschaften - Erweitert" 
02.
set driverport=="Anschlussname/IP des Druckers - findet man in den Druckereigenschaften unter Anschlüsse - Anschluss" 
03.
 
04.
for /f %%i in (%printtxt%) do start /B "Print" "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t %ordner3%\%%i %printer% %drivername% %driverport% && ping -n 30 127.0.0.1 && Taskkill /IM AcroRd32.exe 
Zeile 1 und 2 fügst du oben bei den Set-Anweisungen ein.

Die For-Schleife ersetzt du Zeile 120 im letzten hier abgebildeten Script.

Gruß
Bitte warten ..
Mitglied: Xaero1982
LÖSUNG 12.05.2014, aktualisiert um 11:09 Uhr
Hier noch mal komplett um es abzuschließen

01.
@echo off & setlocal 
02.
 
03.
 
04.
set temptxt=temp.txt 
05.
set tempordner1=%temp%\tempordner1.txt 
06.
set tempordner2=%temp%\tempordner2.txt 
07.
set ordner1=deliver 
08.
set ordner2=label 
09.
set ordner3=out 
10.
set success=log\log.txt 
11.
set printtxt=%temp%\print.txt 
12.
set printer="HIER BITTE DEN DRUCKERNAMEN EINGEBEN" 
13.
 
14.
TITLE Deliver Stamp Programm  
15.
COLOR F0 
16.
ECHO. 
17.
 
18.
 
19.
REM --------------------------------------- 
20.
REM Abfrage ob sie wirklich Labeln moechten 
21.
REM --------------------------------------- 
22.
 
23.
 
24.
 
25.
:LOOP 
26.
SET Choice= 
27.
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)" 
28.
 
29.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1% 
30.
 
31.
ECHO. 
32.
IF /I '%Choice%'=='Y' GOTO ACCEPTED 
33.
IF /I '%Choice%'=='N' GOTO REJECTED 
34.
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) ! 
35.
ECHO. 
36.
GOTO Loop 
37.
 
38.
 
39.
REM --------------------------------------- 
40.
REM Abfrage negativ 
41.
REM --------------------------------------- 
42.
 
43.
 
44.
 
45.
:REJECTED 
46.
ECHO Labeln abgebrochen 
47.
ECHO Sie koennen das Programm nun schliessen. 
48.
GOTO END 
49.
 
50.
 
51.
REM --------------------------------------- 
52.
REM Abfrage positiv 
53.
REM --------------------------------------- 
54.
 
55.
 
56.
:ACCEPTED 
57.
SET NEWLINE=^& echo. 
58.
ECHO Beginn des Labelns 
59.
 
60.
 
61.
REM --------------------------------------- 
62.
REM Konvertierung der PDFs 
63.
REM --------------------------------------- 
64.
 
65.
 
66.
 
67.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt% 
68.
Echo %temptxt% erstellt mit den in %ordner1% enthaltenen PDF Dateien 
69.
 
70.
 
71.
for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i dump_data output %ordner1%\%%i.txt 
72.
Echo Für jede Datei in %temptxt% einen Datadump ausgeführt und in einer Datei gespeichert 
73.
 
74.
 
75.
REM --------------------------------------- 
76.
for /f %%x in (%temptxt%) do for /f "tokens=1* delims== " %%h in ('findstr /ib "NumberOfPages" %ordner1%\%%x.txt') do if %%i GTR 1 (pdftk %ordner1%\%%x cat 1 output %ordner1%\p1_%%x) else (if %%i == 1 copy %ordner1%\%%x %ordner1%\p1_%%x) 
77.
Echo Datadump-Dateien durchsucht nach "NumberOfPages". Wenn die PDF mehr als eine Seite hat wird die Datei gesplitted, sonst nur kopiert wegen dem gleichen Namen 
78.
REM --------------------------------------- 
79.
 
80.
 
81.
REM --------------------------------------- 
82.
for /f %%i in (%temptxt%) do if exist %ordner2%\%%i (pdftk %ordner1%\p1_%%i background %ordner2%\%%i output %ordner3%\temp_stamped_document_%%i && echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien erfolgreich gelöscht.>>%success%) else (echo %%i error am %date% %time% %ordner1%\%%i : %ordner2%\%%i - Cachedateien behalten.>>%success%) 
83.
Echo Wenn die Datei aus %ordner1% in %ordner2% existiert sollen diese Dateien mit pdftk in eine temporäre Datei zusammengeführt werden und ein Eintrag in der Datei %susccess% erstellt werden. 
84.
REM --------------------------------------- 
85.
 
86.
 
87.
REM --------------------------------------- 
88.
for /f %%x in (%temptxt%) do for /f "tokens=1* delims== " %%h in ('findstr /ib "NumberOfPages" %ordner1%\%%x.txt') do if %%i GTR 1 (pdftk A=%ordner3%\temp_stamped_document_%%x B=%ordner1%\%%x cat A1 B2-end output %ordner3%\stamped_document_%%x && del %ordner3%\temp_stamped_document_%%x) else (ren %ordner3%\temp_stamped_document_%%x stamped_document_%%x) 
89.
Echo Hier wird erneut die Anzahl der Seiten geprüft. Wenn diese größer als 1 ist wird mit pdftk die temporäre Datei, die aus der Datei aus %ordner1% und der Datei aus %ordner2% besteht, mit dem Rest, also ab Seite 2 der Datei aus %ordner1% zusammen geführt. Wenn die Seitenzahl 1 ist wird die temporäre Datei lediglich umbenannt. 
90.
REM --------------------------------------- 
91.
 
92.
Echo. 
93.
 
94.
 
95.
REM --------------------------------------- 
96.
REM Abfrage positiv - Endnachricht 
97.
REM --------------------------------------- 
98.
 
99.
ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen. 
100.
 
101.
 
102.
for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1% 
103.
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2% 
104.
 
105.
REM for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i && del %ordner1%\p1_%%a && echo Die Dateien %ordner1%\%%a und %ordner2%\%%i wurden am %date% um %time% gelöscht>>%success% 
106.
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i (del %ordner1%\%%a && del %ordner2%\%%i)  
107.
 
108.
 
109.
110.
 
111.
GOTO END 
112.
 
113.
:END 
114.
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt% 
115.
for /f %%i in (%printtxt%) do start /B "Print" "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t %ordner3%\%%i %printer% && ping -n 30 127.0.0.1 && Taskkill /IM AcroRd32.exe 
116.
 
117.
del %ordner1%\p1_*.pdf 
118.
del %ordner1%\*.txt 
119.
del %temptxt% 
120.
del %printtxt%  
121.
del %tempordner1% 
122.
del %tempordner2% 
123.
md print_done\%date% 
124.
move %ordner3%\*.* print_done\%date% 
125.
ECHO.
Das Drucken funktioniert hier unter Angabe des PDF Creators. Laut dem TE auch mit einem anderen normalen Drucker ohne die Ergänzungen mit Port und Druckertreibername.

Die Verzögerung des Drucks ist über die Anzahl der Pings zu steuern.

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...