JKW 1 Posted December 20, 2020 Report Posted December 20, 2020 (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 December 20, 2020 by JKW Quote
cj_berlin 1,383 Posted December 20, 2020 Report Posted December 20, 2020 Moin, zwei Dinge: Es sollte heißen IF NOT %ERRORLEVEL% == 1 GOTO ZUHAUSE 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 Quote
JKW 1 Posted December 20, 2020 Author Report Posted December 20, 2020 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! Quote
cj_berlin 1,383 Posted December 20, 2020 Report Posted December 20, 2020 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 2 Quote
JKW 1 Posted December 20, 2020 Author Report Posted December 20, 2020 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. 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.