Batch Drucker verbinden mit Prüfung

FrAGgi

Commodore
Registriert
März 2005
Beiträge
4.932
Hallo,

ich habe hier ein kleines Batchprogramm geschrieben, dass zuerst prüft ob ein bestimmter Drucker angelegt ist, ihn dann löscht wenn er vorhanden ist und dann erneut anlegt. Der Sinn hinter der Batch-Datei ist, dass wir einen PC haben, der manchmal nach einem Neustart die Drucker nicht richtig ansteuern kann und man diese neuanlegne muss. Als temporäre Lösung soll das Skript ran.
Meine Frage: Ist das Skript so richtig (besonders die Prüfung)? Und lässt sich die Windowsmeldung unterbinden die erscheint, falls der Drucker nicht angelegt werden kann (nicht erreichbar ist)? Da erscheint ja dann eine Meldung, die sagt, dass der Drucker nicht gefunden werden kann etc. Lässt sich das deaktivieren?
Habe mit Batch nicht allzu viel Erfahrung.

Code:
@echo off

echo #######################################################
echo #                                                                                                               #
echo #     Automatische Druckerverbindung                                                          #
echo #                                                                                                               #
echo #######################################################
echo *

reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" >> C:\Temp\drucker.txt

find "172.16.17.79" C:\Temp\drucker.txt && rundll32 printui.dll,PrintUIEntry /dn /n \\172.16.17.79\hppsc120

del C:\Temp\drucker.txt

rundll32 printui.dll,PrintUIEntry /in /n \\172.16.17.79\hppsc120

Bin für jeden Hinweis dankbar.

MfG
FrAGgi
 
Zuletzt bearbeitet:
@ryan_blackdrago
Danke für den Hinweis, aber bei der Ausführung der .exe Datei gibt es keien Unterschiede im Vergleich zur .bat :p Die Meldung wird weiterhin angezeigt. Ist ja aber auch keine Fehlermeldung auf Konsolenebene, sondern in einem Windowsfenster.
 
Also, hab's gerade nochmals bei mir getestet. Da funktioniert's ohne irgendwelche Meldungen. Euch ist der betroffene Drucker bekannt? Dann würde ich die Batch wie folgt umschreiben:

Code:
@echo off
rundll32 printui.dll,PrintUIEntry /dn /n \\Server\Freigabenname"
rundll32 printui.dll,PrintUIEntry /in /n \\Server\Freigabenname"

Das Script löscht nur den betroffenen Drucker raus und mappt ihn dann auch gleich wieder. Da das Script über den Converter 'unsichtbar' abläuft, ist nur ganz kurz der automatische Windows-Drucker-Hinzufüge-Dialog zu sehen.

Wenn's dann noch der Standard-Drucker werden soll, einfach noch folgende Zeile zusätzlich anfügen:
Code:
rundll32 printui.dll,PrintUIEntry /y /n "\\Server\Freigabenname"

Ansonsten: bei deinem Script, den Parameter /q für den Stillen Modus hinzufügen (keine Fehlermeldungen werden angezeigt).
 
Zuletzt bearbeitet:
Ich meine die Fehlermeldung, die man auf dem Bild im Anhang sieht. Das Skript soll bei dem betreffenden Rechner in den Autostart rein. Der Drucker hängt an einem anderen Rechner und ist freigegeben. Das Verbinden und Trennen klappt auch. Nur wenn der Rechner an dem der Drucker hängt zu dem Zeitpunkt wo das Skript ausgeführt ist aus ist, erscheint diese Fehlermeldung. Um unsere armen User jedoch nicht zu überfordern, soll die Meldung nicht erscheinen.
Wo soll ich denn den Parameter /q anhängen?
 

Anhänge

  • Fehlermeldung.jpg
    Fehlermeldung.jpg
    36,3 KB · Aufrufe: 495
bin jetzt nicht so der Batch-Mann :D, aber es gibt vielleicht eine Möglichkeit den PC zu Pingen und je nachdem dann den Drucker einrichten oder halt nicht.

mit Autoit würde zumindest das Pingen und Prüfen relativ einfach gehen
 
@Patric_
Danke für den Tip, hab gar nicht dran gedacht den Drucker vorher mit einem Ping Befehl zu suchen... :rolleyes:
Habe das Skript jetzt wie folgt geändert und es hat bei den ersten Testläufen funktioniert.

Code:
@echo off

echo #######################################################
echo #                                                     #
echo #     Automatische Druckerverbindung             #
echo #                                                     #
echo #######################################################
echo *

reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" >> C:\Temp\drucker.txt

find "172.16.17.79" C:\Temp\drucker.txt && rundll32 printui.dll,PrintUIEntry /dn /n \\172.16.17.79\hppsc120

del C:\Temp\drucker.txt

if exist C:\Temp\pingtestdrucker.txt del C:\Temp\pingtestdrucker.txt
ping -n 1 172.16.17.79 >> C:\Temp\pingtestdrucker.txt
find "Zeitberschreitung der Anforderung." C:\Temp\pingtestdrucker.txt && goto fehler
goto erfolgreich

:fehler
echo Drucker nicht erreichbar!
goto ende

:erfolgreich
del C:\Temp\pingtestdrucker.txt
rundll32 printui.dll,PrintUIEntry /in /n \\172.16.17.79\hppsc120
echo Drucker wurde angelegt
goto ende

:ende
echo ENDE
pause
Bin mir nur nicht ganz sicher, ob die Prüfung auf "Zeitüberschreitung" und ein Druchlauf des Ping die beste Methode ist. Für diesen kleinen Fall sollte es aber reichen denke ich.

Danke für die Antworten!

MfG
FrAGgi
 
Zurück
Oben