Netzwerkänderung und Eintritt in eine Domäne per Batchscript
Hallöchen,
ich versuche mich gerade im Batchscriptung (hab das vor Jahren mal gemacht) und sitze an meinem kleinen VM Netzwerk vor folgendem Problem:
Ich möchte einen Client per Batchdatei in das VM Netz (Server 2003 mit DHCP, DNS usw. steht bereits) aufnehmen. Da der Server in einem eigenen Netz ist, müssen natürlich die Netzwerkeinstellungen geändert werden und dabei hängt es.
Ich habe folgende Batchdatei geschrieben:
Die Netzwerkdaten werden geändert, doch bei der Überprüfung bekomme ich die Meldung das "Set syntaktisch falsch wäre" Ich vermute, dass ich in der IF Abrage in Zeile 19 einen Fehler habe. Ich hoffe mir kann jemand weiterhelfen
ich versuche mich gerade im Batchscriptung (hab das vor Jahren mal gemacht) und sitze an meinem kleinen VM Netzwerk vor folgendem Problem:
Ich möchte einen Client per Batchdatei in das VM Netz (Server 2003 mit DHCP, DNS usw. steht bereits) aufnehmen. Da der Server in einem eigenen Netz ist, müssen natürlich die Netzwerkeinstellungen geändert werden und dabei hängt es.
Ich habe folgende Batchdatei geschrieben:
@ECHO OFF
ECHO ***********************************************
ECHO * Script um Rechner in die Domäne aufzunehmen *
ECHO ***********************************************
ECHO.
ECHO.
ECHO Ändere Netzwerkeinstellungen des Rechners
ECHO.
ECHO Neue IP-Adresse: 192.168.0.254
ECHO Neue Subnet-Maske: 255.255.255.0
ECHO Neues Gateway: 192.168.0.1
ECHO.
ECHO.
netsh interface ip set address name="LAN-Verbindung" source=static addr=192.168.0.254 mask=255.255.255.0 gateway=192.168.0.1 gwmetric=1
ECHO.
ECHO.
ECHO Prüfe ob Netzwerkdaten korrekt geändert wurden:
@for /F "tokens=10,*" %%i in ('ipconfig /all^|find "IP-Adresse"') do @set IP=%%i
if %IP% == 192.168.0.254 goto SET IPA = OK ELSE SET IPA = NOK
@for /F "tokens=10,*" %%i in ('ipconfig /all^|find "Subnetmaske"') do @set Subnet=%%i
if %Subnet% == 255.255.255.0 SET SUBNET = OK ELSE Set Subnet = NOK
@for /F "tokens=10,*" %%i in ('ipconfig /all^|find "Standardgateway"') do @set Gateway=%%i
if %Gateway% == 192.168.0.1 set Gateway = OK ELSE Set Gateway = NOK
IF %IP% == NOK ECHO "IP Adresse wurde nicht geändert"
IF %SUBNET% == NOK ECHO "Subnetmaske wurde nicht geändert"
IF %GATEWAY% == NOK ECHO "Standardgateway wurde nicht geändert"
IF %IP% == OK ECHO "IP Adresse wurde geändert"
IF %SUBNET% == OK ECHO "Subnetmaske wurde geändert"
IF %GATEWAY% == OK ECHO "Standardgateway wurde geändert"
PAUSE
Die Netzwerkdaten werden geändert, doch bei der Überprüfung bekomme ich die Meldung das "Set syntaktisch falsch wäre" Ich vermute, dass ich in der IF Abrage in Zeile 19 einen Fehler habe. Ich hoffe mir kann jemand weiterhelfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 182726
Url: https://administrator.de/forum/netzwerkaenderung-und-eintritt-in-eine-domaene-per-batchscript-182726.html
Ausgedruckt am: 23.12.2024 um 08:12 Uhr
8 Kommentare
Neuester Kommentar
Hallo DragonKM!
Der Fehler solltet aber doch nur auftauchen, wenn %IP% leer ist (den ganzen Batch hatte ich mir nicht angesehen) ...
Vermeiden lässt sich der Fehler entweder mit
oder mit
- ansetzen musst Du aber sicher schon bei der Ermittlung der IP, zB (unter XP) per
Grüße
bastla
Der Fehler solltet aber doch nur auftauchen, wenn %IP% leer ist (den ganzen Batch hatte ich mir nicht angesehen) ...
Vermeiden lässt sich der Fehler entweder mit
if "%IP%"=="192.168.0.254" (SET IPA=OK) ELSE (SET IPA=NOK)
if defined IP if %IP%==192.168.0.254 (SET IPA=OK) ELSE (SET IPA=NOK)
for /F "tokens=14" %%i in ('ipconfig /all^|find "IP-Adresse"') do "set IP=%%i"
bastla
Hallo DragonKM!
Die "geheimnisvolle Token Zahl" bekommst Du durch einfaches Abzählen - wenn das Trennzeichen (= Delimiter) nicht angegeben wird, trennt "
"IP-Adresse" das Token #1, und das Token #13 der Doppelpunkt ...
Grüße
bastla
Die "geheimnisvolle Token Zahl" bekommst Du durch einfaches Abzählen - wenn das Trennzeichen (= Delimiter) nicht angegeben wird, trennt "
for /f
" bei jedem Leerzeichen / jedem TAB (wobei unmittelbar aufeinander folgenden Trennzeichen nur als eines gezählt werden) - daher ist aus der Zeile IP-Adresse. . . . . . . . . . . . : 193.168.0.254
Grüße
bastla