Batch For-Schleife funktioniert erst beim 2. Aufruf der Batch-Datei

Madnex

Vice Admiral
Registriert
März 2004
Beiträge
6.905
Hallo,

folgender Code funktioniert erst beim zweiten Ausführen der Batch-Datei.

Code:
@echo off
For /f "tokens=*" %%v IN ('ver') DO ( 
	SET WINVER=%%v
	IF "%WINVER%"=="Microsoft Windows XP [Version 5.1.2600]" (SET WAHL=choice4xp) ELSE (SET WAHL=choice)
)

Echo %WAHL%
Ich kann mir nicht erklären warum das so ist.

Dieser Code-Schnipsel soll in eine größeren Batch-Datei integriert werden, die auf verschiedenen Rechnern funktionieren muss. Sinn und Zweck dieser For-Schleife ist, die Windows Version herauszufinden. Da WinXP ohne Resource Kit den choice Befehl nicht kennt, soll unter WinXP ein alternatives Programm (von FreeDOS, das unter einem 64-Bit Windows nicht funktioniert) diese Funktion übernehmen

Das funktioniert soweit auch, nur leider erst beim zweiten Mal.

Vielleicht hat auch jemand eine bessere Idee, wie man das umsetzen könnte. Für Vorschläge bin ich offen. Eine Temp-Datei wollte ich jedenfalls vermeiden.
 
Hi,
wie wäre es mit einer sehr einfachen alternative?
Code:
@echo off
 
VER | find "Microsoft Windows XP [Version 5.1.2600]" > nul
IF %errorlevel% EQU 0 GOTO XP

VER | find "Microsoft Windows [Version 6.1]" > nul
IF %errorlevel% EQU 0 GOTO Sieben

goto end
 
:XP
echo Sie benutzten Windows XP
goto end
 
:Sieben
echo Sie benutzten Windows 7
goto end
 
:end
pause
 
Zuletzt bearbeitet:
@Entilzha
Ja, das wäre auch eine Möglichkeit. Danke dafür. :)

Ich habe das mal ein wenig abgewandelt. Es funktioniert gut.
Code:
@echo off
VER | find "Microsoft Windows XP [Version 5.1.2600]" > nul
IF %errorlevel% EQU 0 (GOTO XP) ELSE (GOTO NOXP)

:XP
echo Sie benutzten Windows XP
goto Start

:NOXP
echo Sie benutzten kein Windows XP
goto Start

:Start
Oder
Code:
@echo off
VER | find "Microsoft Windows XP [Version 5.1.2600]" > nul
IF %errorlevel% EQU 0 (SET WAHL=choice4xp) ELSE (SET WAHL=choice)

Echo %WAHL%
Dennoch würde ich schon gerne wissen, weshalb die For-Schleife erst beim zweiten Mal funktioniert.

/Edit
Wenn ich den Code aufsplitte, funktioniert es schon beim ersten Mal:
Code:
@echo off
For /f "tokens=*" %%v IN ('ver') DO SET WINVER=%%v
IF "%WINVER%"=="Microsoft Windows XP [Version 5.1.2600]" (SET WAHL=choice4xp) ELSE (SET WAHL=choice)

Echo %WAHL%
Nur wo liegt der Fehler bei der anderen For-Schleife?
 
Zuletzt bearbeitet:
Bei mir funktioniert dein erste Code schon, nur er gibt immer die gleiche werte zurück, nämlich choice unter windows xp und windows 7 x64 getestet. Bei deinem letzten Code mit der for... ist das gleiche Ergebnis.
 
so hab noch mal in der vmware mit windows xp getestet und tatsächlich gibt er den richtigen Wert zurück :)

Gute Frage wo der Fehler liegt...
 
auch in der vmware, habe da eine 32Bit Version von Windows XP Pro laufen
 
Zurück
Oben