IF-Anweisung im Batch-Skript
Ich Schreibe ein batch-Skript, das wechselt zwischen ip-Adressen abhängig von der Benutzer-Eingabe.
Die Kern-Funktionalität der script funktioniert, jedoch möchte ich hinzufügen, dass einige Kontrollen, die in jeder Funktion prüfen Sie die Einstellung bereits angewendet wird und geben eine Antwort entsprechend.
Mein aktuelle code:
@ECHO OFF
::Change Static IP address for simulator or network connection
:MAINMENU choose option from menu
::Set Current IP Address
for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IP | findstr 192."') do SET LOCAL_IP=%%i
ECHO.
ECHO. Set Workstation...........1
ECHO. Set Simulator.............2
ECHO. Quit (no further action)..Q
ECHO.
choice /c:Q21
ECHO.
IF ERRORLEVEL 3 GOTO WORK
IF ERRORLEVEL 2 GOTO SIM
IF ERRORLEVEL 1 GOTO EOF
::Change IP To network settings
:WORK
IF "LOCAL_IP"=="192.168.1.4" (
ECHO. You are already in this mode
GOTO MAINMENU
) ELSE
(echo "Setting Static IP Information"
netsh int ip set address name="Local Area Connection" source=static addr=192.168.1.4 mask=255.255.255.0 gateway=192.168.1.254 gwmetric=1
netsh int ip set dns name="Local Area Connection" source=static addr=192.168.1.1
echo IP Address Set
goto MAINMENU)
::Set Simulator IP Address
:SIM
IF "LOCAL_IP"=="192.168.4.1" (
ECHO. You are already in this mode
GOTO MAINMENU
) ELSE
echo "Setting Static IP Information"
netsh int ip set address name="Local Area Connection" source=dhcp
netsh int ip set dns name="Local Area Connection" source=dhcp
netsh int ip set address name="Local Area Connection" source=static addr=192.168.4.1 mask=255.255.255.0
echo "Setting Static IP Information"
goto MAINMENU
:EOF
pause
Ich habe Probleme dabei, die IF-Anweisung vergleichen Sie die aktuelle IP-Adresse mit, die ich will, um es zu.
Kann jemand empfehlen, wohin ich gehe falsch, oder bieten Ihnen einige Ideen, um diese arbeiten bitte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke
LOCAL_IP
ist eine Umgebungsvariable, um Sie zu benutzen, müssen Sie schließen Sie den Namen in%
so wird sich der code:und
Hinweis: wo muss man das einstellen das die environment-variable für den tatsächlichen Wert?
for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IP | findstr 192."') do SET LOCAL_IP=%%i
usebackq
vor tokens=2 und die local_ip variable ist jetzt Kommissionierung bis eine Adresse... eine Wendung die Geschichte jetzt, und ich bekomme eine ungültige syntax Fehler in der if-Anweisung nun. Außerdem habe ich die vorgeschlagenen änderungen von Adriano.::@ECHO OFF ::Change Static IP address for simulator or network connection :MAINMENU choose option from menu ::Set Current IP Address for /f "usebackq tokens=2 delims=:" %%f in (
ipconfig ^| findstr /c:"IPv4-Adresse") do Set LOCAL_IP=%%f ::Menu ECHO. ECHO. Set Workstation...........1 ECHO. Set Simulator.............2 ECHO. Quit (no further action)..Q ECHO. choice /c:Q21 ECHO. IF ERRORLEVEL 3 GOTO WORK IF ERRORLEVEL 2 GOTO SIM IF ERRORLEVEL 1 GOTO EOF