jehlenco
Goto Top

Hilfe bei Script ohne feste Dateinamen

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:

@echo off & setlocal
TITLE Deliver Stamp Programm
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



pdftk deliver\deliver1.pdf background label\dpd1.pdf output out\stamped_document.pdf



REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.
GOTO END

:END
ECHO.
ping -n 11 192.168.55.191 > nul
EXIT


Ich würde mich über Hilfe sehr freuen, Danke im Vorraus

Content-Key: 237488

Url: https://administrator.de/contentid/237488

Printed on: April 19, 2024 at 11:04 o'clock

Member: jehlenco
jehlenco May 08, 2014 at 08:36:46 (UTC)
Goto Top
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.
Member: Xaero1982
Xaero1982 May 08, 2014 updated at 08:58:43 (UTC)
Goto Top
Hi,

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

set temptxt=%temp%\temp.txt
set ordner1=deliver
set ordner2=label
set ordner3=out

for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  

for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i background %ordner2%\%%i output %ordner3%\stamped_document_%%i

ungetestet

Gruß
Member: jehlenco
jehlenco May 08, 2014 updated at 09:07:18 (UTC)
Goto Top
Danke schonmal face-smile

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


und das mit allen Dateien.. wieso findet er die nicht?
Member: Xaero1982
Xaero1982 May 08, 2014 at 09:11:21 (UTC)
Goto Top
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

del %ordner1%\*.pdf
del %ordner2%\*.pdf


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ß
Member: jehlenco
jehlenco May 08, 2014 updated at 09:16:31 (UTC)
Goto Top
Ich glaube ich bin zu doof, es sieht jetzt wie folgt aus:

@echo off & setlocal
TITLE Deliver Stamp Programm 
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



REM pdftk deliver\deliver1.pdf background label\dpd1.pdf output out\stamped_document.pdf

set temptxt=temp%\temp.txt
set ordner1=deliver
set ordner2=label
set ordner3=out

for /f "delims=?" %%i in ('dir /b /a "%ordner1%/*.pdf"') do echo %%i>>%temptxt%  

for /f %%i in (%temptxt%) do pdftk %ordner1%/%%i background %ordner2%/%%i output %ordner3%/stamped_document_%%i




REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.
GOTO END

:END
ECHO.
ping -n 11 192.168.55.191 > nul
EXIT

So läuft es leider nicht, danke für die Hilfe!
Member: Xaero1982
Xaero1982 May 08, 2014 at 09:20:45 (UTC)
Goto Top
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? face-smile
Member: jehlenco
jehlenco May 08, 2014 at 09:22:44 (UTC)
Goto Top
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 ;) face-smile

Eine Idee?
Member: Xaero1982
Xaero1982 May 08, 2014 at 09:26:29 (UTC)
Goto Top
Mit:

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"
Member: Xaero1982
Solution Xaero1982 May 08, 2014 updated at 17:56:56 (UTC)
Goto Top
Noch mal als ganzes für dich face-smile

@echo off & setlocal
set temptxt=%temp%\temp.txt
set ordner1=deliver
set ordner2=label
set ordner3=out

TITLE Deliver Stamp Programm 
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  

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)




REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.

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

GOTO END

:END
ECHO.
ping -n 11 192.168.55.191 > nul
EXIT
Member: Xaero1982
Xaero1982 May 08, 2014 at 09:31:11 (UTC)
Goto Top
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 ;) face-smile

Eine Idee?

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

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

Ordner\Unterordner\Unterunterordner\bla.txt

Gruß
Member: jehlenco
jehlenco May 08, 2014 at 10:15:40 (UTC)
Goto Top
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 face-sad
Member: Xaero1982
Xaero1982 May 08, 2014 updated at 10:25:47 (UTC)
Goto Top
Du hast aber schon das echo ersetzt und das REM vor dem löschen entfernt? face-smile

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

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) 

und:

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

Das wird bei solchen Sachen hier generell so gemacht, damit erst mal getestet werden kann. face-smile 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ß
Member: jehlenco
jehlenco May 08, 2014 at 10:39:12 (UTC)
Goto Top
Zitat von @Xaero1982:

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

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. face-smile

Okay das wusste ich nicht face-smile 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 =)
Member: jehlenco
jehlenco May 08, 2014 at 10:50:17 (UTC)
Goto Top
ahh ok das echo durch "pdftk" ersetzen, aber irgendwie geht das immernoch nicht face-sad
Member: jehlenco
jehlenco May 08, 2014 at 10:53:34 (UTC)
Goto Top
Zitat von @jehlenco:

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

Hat geklappt, habe den Fehler gefunden! vielen vielen Dank!!!
Member: Xaero1982
Xaero1982 May 08, 2014 at 11:15:21 (UTC)
Goto Top
Hi,

lass uns mal bitte im Beitrag bleiben und nicht per PN face-smile

Stand ist also, dass es erst mal funktioniert richtig?

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

set printtxt=%temp%\print.txt

for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%  

for /f %%i in (%printtxt%) do print %ordner3%\%%i
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.
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ß
Member: jehlenco
jehlenco May 08, 2014 at 11:28:57 (UTC)
Goto Top
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:

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 face-smile

Die Log wäre folgendermaßen super:

log.txt
Auftrag45635.pdf erfolgreich erstellt am 08-05-2014 13:26 deliver/Auftrag45635.pdf : label/Auftrag45635.pdf 
Cachedateien erfolgreich gelöscht.

Auftrag45636.pdf error am 08-05-2014 13:26 deliver/Auftrag45636.pdf : label/Auftrag45636.pdf 
Cachedateien behalten
.

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

Danke
Member: Xaero1982
Xaero1982 May 08, 2014 updated at 11:57:00 (UTC)
Goto Top
Ich muss jetzt erst mal weg... schaue ich mir später an und teste es dann mal.

Die logdatei kannst du dir selbst anpassen.

echo %%i erfolgreich erstellt am %date% %time% %ordner1%\%%i : %ordner2%\%%i  && echo Cachedateien erfolgreich gelöscht.>>log.txt

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ß
Member: Xaero1982
Solution Xaero1982 May 08, 2014, updated at May 09, 2014 at 06:06:20 (UTC)
Goto Top
Also so sollte es gehen:

@echo off & setlocal


set temptxt=temp.txt
set tempordner1=%temp%\tempordner1.txt
set tempordner2=%temp%\tempordner2.txt
set ordner1=deliver
set ordner2=label
set ordner3=out
set success=log.txt
set printtxt=%temp%\print.txt

TITLE Deliver Stamp Programm 
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  

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%)




REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.


for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1%  
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2%  

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%
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i


)

GOTO END

:END
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%  
for /f %%i in (%printtxt%) do print %ordner3%\%%i

del %temptxt%
del %printtxt% 
del %tempordner1%
del %tempordner2%
ECHO.
REM ping -n 11 192.168.55.191 > nul
REM EXIT

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 face-smile Bei mir wird immer nur die erste Seite auf alle Seiten der anderen PDF gelegt, aber nun gut .)

Gruß und Gn8
Member: jehlenco
jehlenco May 09, 2014 at 05:02:19 (UTC)
Goto Top
Es funktioniert, tausend Dank. Ich weiß gar nicht wie ich mich revangieren kann. Danke!
Member: jehlenco
jehlenco May 09, 2014 updated at 05:49:58 (UTC)
Goto Top
Eine Sache noch, könntest Du mir das mit dem Drucken noch einbinden?

Und er darf es lediglich auf die erste Seite packen...
Member: Xaero1982
Xaero1982 May 09, 2014 updated at 06:21:05 (UTC)
Goto Top
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 face-smile
Member: jehlenco
jehlenco May 09, 2014 updated at 06:26:14 (UTC)
Goto Top
*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:

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
Member: Xaero1982
Xaero1982 May 09, 2014 updated at 06:34:50 (UTC)
Goto Top
Evtl.

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 face-smile
Member: Xaero1982
Xaero1982 May 09, 2014 at 08:50:48 (UTC)
Goto Top
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:

for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%  
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ß
Member: jehlenco
jehlenco May 09, 2014 updated at 09:17:43 (UTC)
Goto Top
Du bist ja wieder da face-smile

Ich habe eben versucht allein weiter zu kommen und es mit einem 2. extra Script versucht zu realisieren, siehe: Batch Datei drucken und anschließend verschieben

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! face-smile
Ich habe den Entwickler von PDFtk auch schon angeschrieben.

Danke nochmals face-smile

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.... face-smile face-smile
Member: Xaero1982
Xaero1982 May 09, 2014 updated at 10:10:54 (UTC)
Goto Top
Also...obiges letztes komplettes script: Zeile 66-68 ersetzen mit:

for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  

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

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%)

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

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.
Member: jehlenco
jehlenco May 09, 2014 at 10:15:10 (UTC)
Goto Top
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 face-smile
Member: Xaero1982
Xaero1982 May 09, 2014 at 10:17:31 (UTC)
Goto Top
Ok...musst du halt testen, ansonsten halt einen ping dazwischen.

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

mit ohne "" und Ordner vorhanden?

Gruß
Member: jehlenco
jehlenco May 09, 2014 updated at 10:28:05 (UTC)
Goto Top
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.
Member: Xaero1982
Xaero1982 May 09, 2014 updated at 10:38:06 (UTC)
Goto Top
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? face-smile

Hier noch mal als Ganzes:

@echo off & setlocal


set temptxt=temp.txt
set tempordner1=%temp%\tempordner1.txt
set tempordner2=%temp%\tempordner2.txt
set ordner1=deliver
set ordner2=label
set ordner3=out
set success=log.txt
set printtxt=%temp%\print.txt
set printer="NAME DES DRUCKERS"  

TITLE Deliver Stamp Programm 
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  

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

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%)

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




REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.
@echo on

for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1%  
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2%  

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%
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i 


)

GOTO END

:END
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%  
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  

del %temptxt%
del %printtxt% 
del %tempordner1%
del %tempordner2%
ECHO.
REM ping -n 11 192.168.55.191 > nul
REM EXIT
Member: jehlenco
jehlenco May 09, 2014 at 10:44:00 (UTC)
Goto Top
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
Member: Xaero1982
Xaero1982 May 09, 2014 updated at 10:55:29 (UTC)
Goto Top
@echo off & setlocal


set temptxt=temp.txt
set tempordner1=%temp%\tempordner1.txt
set tempordner2=%temp%\tempordner2.txt
set ordner1=deliver
set ordner2=label
set ordner3=out
set success=log.txt
set printtxt=%temp%\print.txt
set printer="NAME DEINES DRUCKERS"  

TITLE Deliver Stamp Programm 
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  

for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i cat 1 output %ordner1%\p1_%%i 

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%)

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




REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.
@echo on

for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1%  
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2%  

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%
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i del %ordner1%\%%a && del %ordner2%\%%i 


)

GOTO END

:END
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%  
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  

del %temptxt%
del %printtxt% 
del %tempordner1%
del %tempordner2%
ECHO.
REM ping -n 11 192.168.55.191 > nul
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ß
Member: jehlenco
jehlenco May 09, 2014 at 11:18:37 (UTC)
Goto Top
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
Member: Xaero1982
Xaero1982 May 09, 2014 at 11:32:40 (UTC)
Goto Top
Ich glaube du kannst dem nicht mehr folgen was ich da mache face-smile

Ja mach mal, aber ich bin auch erst mal unterwegs... vielleicht nachher oder morgen. Muss ich sehen.
Member: jehlenco
jehlenco May 09, 2014 at 11:37:44 (UTC)
Goto Top
Ich denke auch :D Vielen Vielen Dank! face-smile face-smile

Schönes Wochenende
Member: Xaero1982
Xaero1982 May 09, 2014, updated at May 11, 2014 at 16:14:02 (UTC)
Goto Top
So Schnauze voll:

@echo off & setlocal


set temptxt=temp.txt
set tempordner1=%temp%\tempordner1.txt
set tempordner2=%temp%\tempordner2.txt
set ordner1=deliver
set ordner2=label
set ordner3=out
set success=log\log.txt
set printtxt=%temp%\print.txt
set printer="NAME DEINES DRUCKERS"  

TITLE Deliver Stamp Programm 
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  

Echo %temptxt% erstellt mit den in %ordner1% enthaltenen PDF Dateien
REM ----------------------------------------


for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i dump_data output %ordner1%\%%i.txt

Echo Für jede Datei in %temptxt% einen Datadump ausgeführt und in einer Datei gespeichert
REM ----------------------------------------


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)  

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  
REM ----------------------------------------


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%)

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.
REM ----------------------------------------


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)  

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.
REM ----------------------------------------


Echo.


REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.


for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1%  
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2%  

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%
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i (del %ordner1%\%%a && del %ordner2%\%%i) 


)

GOTO END

:END
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%  
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  

del %ordner1%\p1_*.pdf
del %ordner1%\*.txt
del %temptxt%
del %printtxt% 
del %tempordner1%
del %tempordner2%
md print_done\%date%
move "%ordner3%\*.*" "%ordner3%\print_done\%date%\"  
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ß
Member: jehlenco
jehlenco May 12, 2014 at 05:07:46 (UTC)
Goto Top
Guten Morgen, hoffe das Wochenende ist erfolgreich überstanden face-smile

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ß
Member: Xaero1982
Xaero1982 May 12, 2014 updated at 08:16:29 (UTC)
Goto Top
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:

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
Member: jehlenco
jehlenco May 12, 2014 at 08:17:45 (UTC)
Goto Top
Den Drucker hatte ich eingetragen, wäre super wenn Du es mir nochmal komplett schicken würdest ;)

Ich probiere es dann nochmals umgehend face-smile
Member: Xaero1982
Xaero1982 May 12, 2014 at 08:25:04 (UTC)
Goto Top
Es kann mit dem Drucken sein, dass du da noch einige Anpassungen machen musst.

Und zwar wie folgt:

set drivername="Treibername des Druckers - findet man in den Druckereigenschaften - Erweitert"  
set driverport=="Anschlussname/IP des Druckers - findet man in den Druckereigenschaften unter Anschlüsse - Anschluss"  

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ß
Member: Xaero1982
Solution Xaero1982 May 12, 2014 updated at 09:09:45 (UTC)
Goto Top
Hier noch mal komplett um es abzuschließen

@echo off & setlocal


set temptxt=temp.txt
set tempordner1=%temp%\tempordner1.txt
set tempordner2=%temp%\tempordner2.txt
set ordner1=deliver
set ordner2=label
set ordner3=out
set success=log\log.txt
set printtxt=%temp%\print.txt
set printer="HIER BITTE DEN DRUCKERNAMEN EINGEBEN"  

TITLE Deliver Stamp Programm 
COLOR F0
ECHO.


REM ---------------------------------------
REM Abfrage ob sie wirklich Labeln moechten
REM ---------------------------------------



:LOOP
SET Choice=
SET /P Choice="Deliver Stamp Programm version 1.0 | Lieferscheine Labeln? ((Y)es/(N)o)"  

IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%  

ECHO.
IF /I '%Choice%'=='Y' GOTO ACCEPTED  
IF /I '%Choice%'=='N' GOTO REJECTED  
ECHO Bitte auswaehlen Y (fuer Ja) oder N (fuer Nein) !
ECHO.
GOTO Loop


REM ---------------------------------------
REM Abfrage negativ
REM ---------------------------------------



:REJECTED
ECHO Labeln abgebrochen
ECHO Sie koennen das Programm nun schliessen.
GOTO END


REM ---------------------------------------
REM Abfrage positiv
REM ---------------------------------------


:ACCEPTED
SET NEWLINE=^& echo.
ECHO Beginn des Labelns


REM ---------------------------------------
REM Konvertierung der PDFs
REM ---------------------------------------



for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%temptxt%  
Echo %temptxt% erstellt mit den in %ordner1% enthaltenen PDF Dateien


for /f %%i in (%temptxt%) do pdftk %ordner1%\%%i dump_data output %ordner1%\%%i.txt
Echo Für jede Datei in %temptxt% einen Datadump ausgeführt und in einer Datei gespeichert


REM ---------------------------------------
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)  
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  
REM ---------------------------------------


REM ---------------------------------------
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%)
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.
REM ---------------------------------------


REM ---------------------------------------
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)  
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.
REM ---------------------------------------

Echo.


REM ---------------------------------------
REM Abfrage positiv - Endnachricht
REM ---------------------------------------

ECHO Erfolgreich ausgefuehrt! Ihre Lieferscheine sind nun mit dem DPD Label versehen. Sie koennen das Programm nun schliessen.


for /f "delims=?" %%i in ('dir /b /a "%ordner1%\*.pdf"') do echo %%i>>%tempordner1%  
for /f "delims=?" %%i in ('dir /b /a "%ordner2%\*.pdf"') do echo %%i>>%tempordner2%  

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%
for /f %%a in (%tempordner1%) do for /f %%i in (%tempordner2%) do if %%a==%%i (del %ordner1%\%%a && del %ordner2%\%%i) 


)

GOTO END

:END
for /f "delims=?" %%i in ('dir /b /a "%ordner3%\*.pdf"') do echo %%i>>%printtxt%  
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  

del %ordner1%\p1_*.pdf
del %ordner1%\*.txt
del %temptxt%
del %printtxt% 
del %tempordner1%
del %tempordner2%
md print_done\%date%
move %ordner3%\*.* print_done\%date%
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ß