JKW 1 Geschrieben 20. Dezember 2020 Melden Teilen Geschrieben 20. Dezember 2020 (bearbeitet) 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? bearbeitet 20. Dezember 2020 von JKW Zitieren Link zu diesem Kommentar
cj_berlin 1.313 Geschrieben 20. Dezember 2020 Melden Teilen Geschrieben 20. Dezember 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 Zitieren Link zu diesem Kommentar
JKW 1 Geschrieben 20. Dezember 2020 Autor Melden Teilen Geschrieben 20. Dezember 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! Zitieren Link zu diesem Kommentar
cj_berlin 1.313 Geschrieben 20. Dezember 2020 Melden Teilen Geschrieben 20. Dezember 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 Zitieren Link zu diesem Kommentar
JKW 1 Geschrieben 20. Dezember 2020 Autor Melden Teilen Geschrieben 20. Dezember 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.