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

Fehlerabfrage im Batchscript

Frage Entwicklung

Mitglied: nulpen

nulpen (Level 1) - Jetzt verbinden

03.05.2010 um 17:09 Uhr, 4362 Aufrufe, 7 Kommentare

Hallo Leute,
das letzte mal wurde mir klasse geholfen, vielleicht habe ich wieder Glück..... ;)

Folgendes Szenario:

Es werden PDFS in Ordner verschoben und von dort ausgedruckt, dazu gibt es verschiedene Ordner für die verschiedene Drucker .

Ich lasse dazu eine Endlos Batchdatei laufen die immer wieder diese Ordner überwacht.

Wenn jetzt ein PDF dort landet wird

a) der Standarddrucker automatisch auf den z.b: DRUCKER1 umgestellt
b) Adober Reader geöffnet
c)dDas Dokument ausgedruckt
d) Adobe geschlossen
e) das PDF gelöscht
f) Der Standarddrucker wieder umgestellt
g) es wird wieder an den Anfang gesprungen

Klappt alles soweit, ich lasse den Adobe mit TSKILL beenden.

Was mache ich aber für den Fall daß

1. Eine Große Datei gedruckt wird und daher nicht sofort der Adobe geschlossen werden kann (Zeitschleifen Errorlevelabfragen ?)
2. Bereits die nächste Datei kommt und ggf. 2 Files im Ordner liegen (1 wird gerade gedruckt, die zweite ist schon da, also der DEL *.PDF würde auch die 2. killen)

Ich habe mal mit ERRORLEVEL experimentiert komme aber nicht weiter.

Wenn ich das ROH-Script mal posten soll bitte melden

Danke
Ralf
Mitglied: bastla
03.05.2010 um 17:41 Uhr
Hallo nulpen!

Was den Fall "2 oder mehr Dateien" angeht, sollte es doch möglich sein, diese Dateien per Schleife, zB
for %%i in ("D:\Der Druckerordner\*.pdf") do ( ...
einzeln an den "Adobe Reader" zu übergeben und dann auch einzeln zu löschen ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
03.05.2010 um 18:26 Uhr
Zitat von nulpen:
Wenn ich das ROH-Script mal posten soll bitte melden

Hallo Ralf, das wird nötig sein.
Denn solange wir nicht wissen wie du die Schritte b), c) und d) ausführst, ist es schwer zu helfen.

Gruß
LotPings
Bitte warten ..
Mitglied: nulpen
03.05.2010 um 18:51 Uhr
HIER DAS ROHSCRIPT

:Start
REM --------------------- Überprüfen ob Datei vorhanden --------------------------

if exist "D:\STAPEL\SIP\*.PDF" goto K80
if exist "D:\TEST\PDFDRUCK\EINSEITIG\*.pdf" goto XPS
if exist "D:\TEST\PDFDRUCK\BRIEFKOPF\*.pdf" goto K80
if exist "D:\TEST\PDFDRUCK\BILANZ\*.pdf" goto SHARP

goto START


:K80
REM ---------------Standarddrucker umstellen --------------------------------------

rundll32 printui.dll,PrintUIEntry /y /n K80

echo Errorlevel ist: [%errorlevel%]
pause

REM ----------------Datei ausgeben ------------------------------------------------

@for %%p in ("D:\STAPEL\SIP\*.pdf") do "C:\Programme\Adobe\Reader 8.0\Reader\AcroRd32.exe" /p /h "%%p"

echo Errorlevel ist: [%errorlevel%]
pause

REM ----------------------PDF löschen -----------------------------------------------

del D:\STAPEL\SIP\*.pdf

echo Errorlevel ist: [%errorlevel%]
pause


REM ----------------------------Standarddrucker umstellen --------------------------------

rundll32 printui.dll,PrintUIEntry /y /n SHARP

echo Errorlevel ist: [%errorlevel%]

pause
tskill AcroRd32 /A
pause

:end

echo Errorlevel ist: [%errorlevel%]

goto START

***
Die Pausen und die Errorlevels habe ich nur für mich eingesetzt, für jeden DRUCKER gibt es dann weitere Sprungadressen

Ich muß ohne Pausen die angesprochenen Fehler ausmerzen, damit das Script nicht schneller läuft als die Dateien verarbeitet und
gedruckt werden.

Auch muß gewährleistet sein daß eine große noch nicht fertige PDF die schon Namen und Dateiendung trägt als Druckfertig angesehen
wird. Daher die Abfrage der Errorlevels.
Bitte warten ..
Mitglied: LotPings
03.05.2010 um 19:44 Uhr
Hallo Ralf,

Bitte formatiere deinen Code zur besseren Les-/Referenzier-barkeit unbedingt mit den dafür vorgesehenen Codetags in der Formatierungshilfe
Ich habe in dieser Batch Zeile 21 abgeändert, einige Pausen und tskill entsorgt ohne die Logik ansonsten nach zu vollziehen.
Die Batch sollte warten bis Adobe Reader mit Drucken fertig ist.

01.
@Echo off 
02.
:Start 
03.
REM --------------------- Überprüfen ob Datei vorhanden -------------------------- 
04.
 
05.
if exist "D:\STAPEL\SIP\*.PDF" goto K80 
06.
if exist "D:\TEST\PDFDRUCK\EINSEITIG\*.pdf" goto XPS 
07.
if exist "D:\TEST\PDFDRUCK\BRIEFKOPF\*.pdf" goto K80 
08.
if exist "D:\TEST\PDFDRUCK\BILANZ\*.pdf" goto SHARP 
09.
 
10.
goto START 
11.
 
12.
:K80 
13.
REM ---------------Standarddrucker umstellen -------------------------------------- 
14.
 
15.
rundll32 printui.dll,PrintUIEntry /y /n K80 
16.
 
17.
echo Errorlevel ist: [%errorlevel%] 
18.
 
19.
REM ----------------Datei ausgeben ------------------------------------------------ 
20.
 
21.
@for %%p in ("D:\STAPEL\SIP\*.pdf") do Start /Wait "PDF-Druck" "C:\Programme\Adobe\Reader 8.0\Reader\AcroRd32.exe" /p /h "%%p" 
22.
 
23.
echo Errorlevel ist: [%errorlevel%] 
24.
 
25.
REM ----------------------PDF löschen ----------------------------------------------- 
26.
 
27.
del D:\STAPEL\SIP\*.pdf 
28.
 
29.
echo Errorlevel ist: [%errorlevel%] 
30.
 
31.
REM ----------------------------Standarddrucker umstellen -------------------------------- 
32.
 
33.
rundll32 printui.dll,PrintUIEntry /y /n SHARP 
34.
 
35.
echo Errorlevel ist: [%errorlevel%] 
36.
Pause 
37.
goto START 
38.
 
Gruß
LotPings
Bitte warten ..
Mitglied: nulpen
03.05.2010 um 20:02 Uhr
Danke !

TSKILL brauche ich doch um ADOBE wieder zu schliessen, die Pausen habe ich nur für die Testphase, natürlich muß das Ding ohne Pause laufen.

Auch die Ausgabe der Errorlevels waren für mich nur die Kontrolle welcher Fehler überhaupt ausgegeben wird.

Ich dachte an eine Abfrage nach dem Errorlevel und dann entsprechende Sprungadressen je nach Position der Batchdatei.

Danke
Ralf
Bitte warten ..
Mitglied: LotPings
03.05.2010 um 20:55 Uhr
Hallo Ralf,
hast du alternativ mal den Command line switch /t versucht?
der sollte im Hintergrund öffnen, drucken und auch wieder schließen, siehe hier damit sollte auch die Druckerauswahl funktionieren, ich kann das derzeit nicht selber testen.

Gruß
LotPings
Bitte warten ..
Mitglied: 60730
04.05.2010 um 11:06 Uhr
Salü,

unabhängig von den anderen Tipps würde ich das ganze Batch noch kürzen und die vielen doppelten/dreifachen Schritte weglassen.
ungetestet aus dem Bauch

01.
:checkit 
02.
if exist "D:\STAPEL\SIP\*.PDF" set "print"=="D:\STAPEL\SIP\"  && rundll32 printui.dll,PrintUIEntry /y /n K80 
03.
rem usw. 
04.
 
05.
:DOIT 
06.
for %%p in ("%print%\*.pdf") do ( 
07.
                                Start /Wait "PDF-Druck" "C:\Programme\Adobe\Reader 8.0\Reader\AcroRd32.exe" /p /h "%%p" 
08.
                                del "%print%\%%p" 
09.
)

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...