WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Standard Drucker umstellen im Netzwerk (http://www.wcm.at/forum/showthread.php?t=230270)

enjoy2 28.08.2008 08:04

Standard Drucker umstellen im Netzwerk
 
trau es mich eigentlich im Programmierforum nicht posten, ist ja eigentlich kein Programmieren, was ich hier schreibe, aber sonst passt es auch nicht wirklich


von einigen Usern kam der Wunsch, dass der Standarddrucker automatisch wechseln sollte, von mobilen Drucker auf Büro-Laser, je nach dem ob sie im Netz angemeldet sind, oder nicht

wollte zuerst ein kl. Programm suchen (selber programmieren gab ich bald auf), dass dies mit einen Ping und je nach dem den Standarddrucker ändert - es gibt aber nix

nachdem ich viele Seiten im Netz durchwühlt habe, fand ich eine für mich einfache und durchführbare Lösung

eine Bat.Datei (z.B. Druckerumstellen.bat) in der folgendes steht:

Code:

rundll32 printui.dll,PrintUIEntry /y /n "Druckername"

Netzwerkpfad\Netzwerkdrucker.bat

Die Netzwerkdrucker.bat ist sehr ähnlich aufgebaut

Code:

rundll32 printui.dll,PrintUIEntry /y /n "Druckername"
schwieriger ist es hier, denn richtigen Druckernamen zu finden (beginnt mit \\.....), vielleicht findet man diesen auch irgendwo in einer Einstellung, am einfachsten findet man ihn auf einen ausgedruckten Testseite unter Sendezeit, Computername, Druckername

den Druckername für den mobilen Drucker kann man einfach aus den Namen in den Druckereinstellungen kopieren

Nach dem Erstellen kopiert man die Druckerumstellen.bat in den Order Autostart des Startmenüs und die Netzwerkdrucker.bat auf einen Netzwerkordner, auf den der User Zugriff hat, der Pfad in der Druckerumstellen.bat muss natürlich auf den Speicherplatz der Netzwerkdrucker.bat verweisen ;)

Die Idee dahinter ist folgende: wenn der User den Laptop startet, so wird der mobile Drucker als Standarddrucker definiert.
Startet er den Rechner im Büro am Netzwerk, so kann er auf die Datei Netzwerkdrucker.bat zugreifen, welche den Netzwerkdrucker als Standard einstellt, ohne Netzwerkanschluss schließt sich die Bat-Datei und der mobile Drucker bleibt der Standarddrucker

klar, dies könnte man auch mit VB oder was auch immer lösen, ich kann es (leider) nicht, wenn jemand ein kl. Programm dafür schreiben möchte, gerne ;)

zB. wäre ein kl. Program nett, welches die Erstellung der Bat-Dateien übernimmt (Eintrag der Druckernamen, bzw. Netzwerkpfad)

buntstift 28.08.2008 08:24

für den fall dass die user (wenn im büro) an einer domäne angemeldet werden könntest du das mit an-/abmeldeskripten lösen.
Also immer wenn sich der user an der domäne anmeldet (im netzwerk) wird der netzwerkdrucker als standard eingestellt und beim abmelden auf mobil umgestellt.

EDIT: was vergessen
nette lösung :D gut dass du sie gepostet hast, wird sicher mal jemand brauchen können.

LouCypher 28.08.2008 09:48

wieso ziehst die beiden drucker nicht einfach als verknüpfung auf den desktop? Jenachdem wo der user ist kann den gewünschten rechts anclicken und auf standard setzen. Sollte eine dau tauliche lösung sein.

enjoy2 28.08.2008 10:21

alles automatisierbare macht keine Userfragen ;)

klar wäre das auch eine Lösung, nur kommt innerhalb einer Stunde die Frage, geht das auch nicht per Doppelklick - eine Verknüpfung auf so eine Bat.Datei und es geht

LouCypher 28.08.2008 11:12

dann sag halt nein ;)

Ich würde das mit einem batch machen der checkt ob du im netz bist oder nicht, zb mit:

Zitat:

ping -n 1 192.168.254.25 | find "Antwort" > nul | if %errorlevel% ==1 notepad.exe
in deinem fall also:
Zitat:

ping -n 1 192.168.254.25 | find "Antwort" > nul | if %errorlevel% ==1 goto :net else goto :nonet

:net
rundll32 printui usw.usw

:nonet
rundll32 printui usw.usw


enjoy2 28.08.2008 11:35

zuerst einmal danke für den Hinweis, sowas suchte ich, fand ich aber nicht ;)

bzw. eine Frage, sollte "Antwort" nicht "Gesendet" heißen?

bzw. was ich gerade getestet habe, ist es wurst, was da steht
wichtig ist, dass der "Errorlevel" 0 ist, weil damit die weitere Vorgehensweise ausgelöst wird.

könnte ich es dann nicht weglassen, bzw. welche Funktion hat " find "Antwort" > nul"?

LouCypher 28.08.2008 12:01

afaik gibt ping keinen errorlevel aus, vielleicht lieg ich aber falsch. Find "anwort" > nul durchsucht die ausgabe vom ping nach dem wort "antwort" wird es gefunden (errorlevel=1), gehts weiter.

mit errorlevel 0 geht bei mir immer notepad auf egel ob eine antowrt auf den ping gibt oder nicht, bei 1 geht notepad nur auf wenns eine antwort gibt.

LouCypher 28.08.2008 12:12

hab das jetzt nochmal getestet exakt so wie der befehl oben steht und jetzt gehts nicht mehr, exakt der gleiche befehl hat vor 5min noch perfekt funktioniert. :confused:

enjoy2 28.08.2008 12:56

darum war ja meine Frage, ob statt "Antwort" nicht eigentlich "Verloren" stehen sollte

Code:

C:\>ping -n 1 192.168.254.25

Ping wird ausgeführt für 192.168.254.25 mit 32 Bytes Daten:

Zeitüberschreitung der Anforderung.

Ping-Statistik für 192.168.254.25:
    Pakete: Gesendet = 1, Empfangen = 0, Verloren = 1 (100% Verlust),

C:\>

Mit
Code:

C:\>ping -n 1 192.168.254.25 | find "verloren" | if verloren ==1 notepad.exe
funktioniert es auch - öffnet, da die IP in unsern Netz nicht vorhanden ist, Notepad

enjoy2 28.08.2008 13:01

und im nächsten Moment geht es nicht mehr ....


werd wohl bei meiner Lösung bleiben, aber interresieren, warum es mal geht und mal nicht, würde es mich schon

enjoy2 28.08.2008 15:40

http://www.nickles.de/c/a3/538009121.htm

Code:

ping /n 1 192.168.10.1 > nul
if errorlevel 1 goto nichtda1
echo "Router ist online!"
goto end1
:nichtda1
echo "Router ist NICHT online!"
:end1

damit funktioniert es, warum obiges nicht (immer) geht, weiß ich aber nicht


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag