conf_t
Admiral
- Registriert
- Juni 2008
- Beiträge
- 9.716
Hi,
ich klimpere gerade ein Batch-Skript zusammen, bei dem unter bestimmten Bedingungen ein Routeneintrag am Ende geändert wird. Die Bedingen sind ein LTE Stick mit einer bestimmten (bekannten MAC). Leider ändert sich die letzte Stelle der MAC je nach USB-Port. Also können nur 5 von 6 Hex-Stellen der MAC berücksichtig werden. Ferner wird für die Änderung der Route die Interface ID der reguären NIC benötigt. Die kann sich offenbar seit Wind 10 (Win8 auch?) offenbar auch mal von Reboot zu Reboot ändern. Bei Win 7 war das immer fest das IF 11. Letzters habe ich hinbekommen, beim ersteren scheitere ich irgendwie beim kürzen der ausgelesenen MAC um 3 Stellen, damit sie mit der Vorgabe vergleichbar wird.
Der in der erste FOR-Schleife ermittelte Wert beinhaltet ein vorangestelltes Leerzeichen, was ebenfalls entfernt werden muss.
Ich finde leider im Internet leider nur einfache Beispiele zu diesen String-Operationen, aber leider sind sie nicht so übertragbar. Also ich mache hier definitiv was falsch, aber ich bin nicht geübt genug mit Batch um das zu sehen.
Es darf auch gerne Powershell sein, aber davon habe ich noch weniger Ahnung.
Mein Problem ist in Zeile 9-14 zu finden. Die Zuweisung der Laufvariable einer anderen Variable haut nicht hin. Die Variable bleibt leer.
Ich hoffe ich war verständlich genug und schon mal Danke vorab für eure Antworten.
ich klimpere gerade ein Batch-Skript zusammen, bei dem unter bestimmten Bedingungen ein Routeneintrag am Ende geändert wird. Die Bedingen sind ein LTE Stick mit einer bestimmten (bekannten MAC). Leider ändert sich die letzte Stelle der MAC je nach USB-Port. Also können nur 5 von 6 Hex-Stellen der MAC berücksichtig werden. Ferner wird für die Änderung der Route die Interface ID der reguären NIC benötigt. Die kann sich offenbar seit Wind 10 (Win8 auch?) offenbar auch mal von Reboot zu Reboot ändern. Bei Win 7 war das immer fest das IF 11. Letzters habe ich hinbekommen, beim ersteren scheitere ich irgendwie beim kürzen der ausgelesenen MAC um 3 Stellen, damit sie mit der Vorgabe vergleichbar wird.
Der in der erste FOR-Schleife ermittelte Wert beinhaltet ein vorangestelltes Leerzeichen, was ebenfalls entfernt werden muss.
Ich finde leider im Internet leider nur einfache Beispiele zu diesen String-Operationen, aber leider sind sie nicht so übertragbar. Also ich mache hier definitiv was falsch, aber ich bin nicht geübt genug mit Batch um das zu sehen.
Es darf auch gerne Powershell sein, aber davon habe ich noch weniger Ahnung.

Mein Problem ist in Zeile 9-14 zu finden. Die Zuweisung der Laufvariable einer anderen Variable haut nicht hin. Die Variable bleibt leer.
Code:
REM Abfrage ob LTE-Stick steckt
setlocal enabledelayedexpansion
REM LTE Adapter finden
cls
set "stick=00-A0-C6-00-00"
set "stickfound=false"
echo Debuginfo %stick%
FOR /F "usebackq tokens=2 delims=:" %%m IN (`ipconfig /all`) DO (
echo Debuginfo %%m
set phy=%%m
echo Debuginfo %phy%
echo Debuginfo %phy:~1,-3%
set phy=%phy:~1,-3%
echo Debuginfo %phy%
IF "%phy%" == "%stick%" (
set "stickfound=true"
GOTO idfinder
)
)
GOTO eof
REM Interface ID ermitteln (nötig für Routinganpassungen)
:idfinder
FOR /F "usebackq tokens=1,5 delims= " %%a IN (`netsh interface ipv4 show interfaces`) DO (
echo %%a %%b
IF %%b EQU Ethernet IF %%a LEQ 9 (
set "interfaceid=%%a"
GOTO ahead
)
)
:ahead
echo InterfaceID %interfaceid%
echo Adapter gefunden %stickfound%
REM Route anpassen
route ADD 192.168.3.0 mask 255.255.255.0 192.168.2.1 METRIC 52 IF %interfaceid%
:eof
Ich hoffe ich war verständlich genug und schon mal Danke vorab für eure Antworten.
Zuletzt bearbeitet: