Jump to content

Batch zur Druckerauswahl in Abhängigekti von der IP des DHCP-Servers


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Posted (edited)

Hallo Beisammen,

ich versuche mittels Batch im Autostart den Standarddrucker in Abhängigkeit davon automatisch zu verändern, ob ich im Home office (DHCP-Server ist eine Fritzbox mit Standardenstellung, d.h. 192.168.178.1) oder im Büro (DHCP-Server dort 110.XXX.YY.1) bin.

 

ping -n 1 192.168.178.1
if not %errorlevel% 1 goto ZUHAUSE
:NICHTZUHAUSE
rundll32 printui.dll,PrintUIEntry /y /n "Ineo Kopierer"
goto ENDE
:ZUHAUSE
rundll32 printui.dll,PrintUIEntry /y /n "Xerox WorkCentre"
:ENDE

Ich habe bisher zwei Batchfiles "Ineo,bat" und "Xerox.bat" mit den betr. Zeilen ("rundll32 printui.dll,PrintUIEntry /y /n "Ineo Kopierer" oder "rundll32 printui.dll,PrintUIEntry /y /n "Xerox WorkCentre" ) die funktionieren, d.h. stellen die Standarddruckereinstellung um, wenn ich auf den einen oder anderen Batchfile clicke. Das soll nun also automatisiert werden.

Ich verstehe die errorlevel-Ausgabe des ping Befehls so, das 0 = kein Fehler, und 1 bis X irgendein Fehler ist, aber bei Verwendung von if der errolevel 1 imer auch die errolevel 2 bis n umfasst, so dass das if errolrlevel 0 immer wahr wäre. Daher habe ich hier mit "if not" gearbeitet: immer, wenn nicht Fehler .1 bis n vorliegt, bin ich zuhause, d.h. soll der Xerox der Standarddrucker sein. 

Aber: es fiunktioniert dennoch nicht. Was ist hier mein Denkfehler?

Edited by JKW
Posted

Moin,

 

zwei Dinge:

  1. Es sollte heißen IF NOT %ERRORLEVEL% == 1 GOTO ZUHAUSE
  2. seit irgendeiner Windows-Version (7?) ist bei ping "Zielhost nicht erreichbar" eine legitime Antwort und resultiert im Errorlevel 0. Das passiert z.B. wenn das Ziel im gleichen Subnetz liegt, aber halt nicht erreichbar ist. Da musst Du schauen, ob es Dir präzise genug ist ;-) 
Posted

Moin und Danke

Zitat

Das passiert z.B. wenn das Ziel im gleichen Subnetz liegt, aber halt nicht erreichbar ist. Da musst Du schauen, ob es Dir präzise genug ist

Da könmnte vielleicht diese Idee helfen

Ping -n 1 192.168.178.1 | Find "TTL="  >Nul  && Echo host is reachable - nur scheint der in win 10 nicht zu funktionieren ...

 

Zitat

seit irgendeiner Windows-Version (7?) ist bei ping "Zielhost nicht erreichbar" eine legitime Antwort und resultiert im Errorlevel 0.

Weist Du zufällig, wie ich mir in der Powershell anzeigen kann, welchen Errorelevel auf den Pinbg hin zurück kommt?

Erfolglos probiert:

- Ping -n 1 192.168.178.1 | echo %%errorlevel%%

- Ping -n 1 192.168.178.1 | echo %errorlevel%

- Ping -n 1 192.168.178.1 | Find "TTL=" echo %errorlevel%

Besten Dank!

 

Posted

In PowerShell brauchst Du kein Ping, da nimmst Du einfach

Test-Connection -ComputerName 192.168.178.1 -Count 1 -Quiet 

und musst Dich um diese Feinheiten nicht kümmern.

...aber ansonsten steht der letzte ERRORLEVEL in PowerShell in der Variablen $LASTEXITCODE :-) 

  • Like 2
Posted

Dankeschön,

Damit kontte ich das Verhalten, dass Errorcode = 0 wenn eine IP im gleichen Subnetz angepingt wird, aber halt nicht erreichbar ist, verifzieren. 

Aber auch, dass , dass Errorcode = 1 wenn eine IP, die nicht im gleichen Subnetz liegt, angepingt wird.

Damit werde ich mal mein Batchfile testen wenn ich aus dem HomeOffice wieder ins Büro gehe - also Mitte nächsten Jahres.

 

 

  • Haha 1
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...