Betriebssystem per Batch bestimmen
Hi
also habe noch ein Problem
habe vorhin schaun wollen ob ich mit einer Batch das Betriebssystem unterscheiden könnte
Habe auch einige Themen/Beiträge durchgelsen und mit dann sowas zusammengebastelt
Weiß jetzt aber nicht wie man dieses Code-Feld macht
@echo off & setlocal
wmic path win32_operatingsystem get caption
wmic path win32_operatingsystem get caption^|FINDSTR "Windows 7" && goto WIN7
wmic path win32_operatingsystem get caption^|FINDSTR "Windows Vista" && goto WINVI
wmic path win32_operatingsystem get caption^|FINDSTR "Windows XP" && goto WINXP
cls
:WIN7
set /p ver="Windows 7"
goto TEST
:WINVI
set /p ver="Windows Vista"
goto TEST
:WINXP
set /p ver="Windows XP"
goto TEST
:TEST
if exist %windir%\SysWOW64\NUL goto X64 else goto X32
:X32
echo Sie haben %ver% 32bit
goto ENDE
:X64
echo Sie haben %ver% 64bit
goto ENDE
:ENDE
pause
Jedenfalls wird angezeigt welche WinVersion man hat aber nur sehr kurz danach wird immer "Windows 7" angezeigt aber ich weiß nicht wo der Fehler liegt
Habs bei meinem Kumpel getestet bei ihm wird ca für 0,5 sek angezeigt "Windows Vista 64bit",was auch stimmt, aber danach "Windows 7"
also habe noch ein Problem
habe vorhin schaun wollen ob ich mit einer Batch das Betriebssystem unterscheiden könnte
Habe auch einige Themen/Beiträge durchgelsen und mit dann sowas zusammengebastelt
Weiß jetzt aber nicht wie man dieses Code-Feld macht
@echo off & setlocal
wmic path win32_operatingsystem get caption
wmic path win32_operatingsystem get caption^|FINDSTR "Windows 7" && goto WIN7
wmic path win32_operatingsystem get caption^|FINDSTR "Windows Vista" && goto WINVI
wmic path win32_operatingsystem get caption^|FINDSTR "Windows XP" && goto WINXP
cls
:WIN7
set /p ver="Windows 7"
goto TEST
:WINVI
set /p ver="Windows Vista"
goto TEST
:WINXP
set /p ver="Windows XP"
goto TEST
:TEST
if exist %windir%\SysWOW64\NUL goto X64 else goto X32
:X32
echo Sie haben %ver% 32bit
goto ENDE
:X64
echo Sie haben %ver% 64bit
goto ENDE
:ENDE
pause
Jedenfalls wird angezeigt welche WinVersion man hat aber nur sehr kurz danach wird immer "Windows 7" angezeigt aber ich weiß nicht wo der Fehler liegt
Habs bei meinem Kumpel getestet bei ihm wird ca für 0,5 sek angezeigt "Windows Vista 64bit",was auch stimmt, aber danach "Windows 7"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132364
Url: https://administrator.de/forum/betriebssystem-per-batch-bestimmen-132364.html
Ausgedruckt am: 10.04.2025 um 23:04 Uhr
6 Kommentare
Neuester Kommentar
Ich kann da so keinen Fehler erkennen, aber bin auch kein Windows Anwender mehr.
Du könntest aber mal das versuchen:Denn wenn der obere "Krams" kein passendes Ergebnis bringt, wird das Programm ja trotzdem weiter abgearbeitet ! Und "Windows 7" ist die Version die als erstes in der Variable gespeichert wird.
So gäbe es die Meldung dass das Betriebssystem nicht erkannt wurde und das Programm beended.
~Arano
Du könntest aber mal das versuchen:
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
..
...
wmic path win32_operatingsystem get caption^|FINDSTR "Windows XP" && goto WINXP
cls
echo Unbekannte Windows Version
goto ENDE
:WIN7
...
..
So gäbe es die Meldung dass das Betriebssystem nicht erkannt wurde und das Programm beended.
~Arano
Ahoi,
LG
Edit: Was die "^" und das "/p" da zu suchen haben kA
Set /p erfordert nen Prompt und ^ liefert invalid get expression...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@echo off & setlocal
wmic path win32_operatingsystem get caption|FINDSTR /c:"Windows 7" && goto WIN7
wmic path win32_operatingsystem get caption|FINDSTR /c:"Windows Vista" && goto WINVI
wmic path win32_operatingsystem get caption|FINDSTR /c:"Windows XP" && goto WINXP
:WIN7
set ver="Windows 7"
goto BIT
:WINVI
set ver="Windows Vista"
goto BIT
:WINXP
set ver="Windows XP"
goto BIT
:BIT
if exist %windir%\SysWOW64\NUL goto X64 else goto X32
:X32
echo Sie haben %ver% 32bit
goto END
:X64
echo Sie haben %ver% 64bit
goto END
:END
pause
endlocal
LG
Edit: Was die "^" und das "/p" da zu suchen haben kA
Hallo,
versuchs mal damit:
Das ^ vor der Pipe | gehört da nicht hin.
findstr "Windows XP" sucht nach Windows oder XP, bei dem Parameter /C: muss die Zeichenfolge komplett stimmen.
set /p wartet auf einen Prompt
und %ver% ist vom Betriebssystem schon belegt (geht aber, da du mit setlocal arbeitest) Edit: Sorry, ver ist ein Befehl, keine Variable
zu einem setlocal gehört auch ein endlocal
Gruß,
Schorsch
versuchs mal damit:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
setlocal
wmic path win32_operatingsystem get caption|FINDSTR /C:"Windows 7" && goto WIN7
wmic path win32_operatingsystem get caption|FINDSTR /C:"Windows Vista" && goto WINVI
wmic path win32_operatingsystem get caption|FINDSTR /C:"Windows XP" && goto WINXP
cls
:WIN7
set osver="Windows 7"
goto TEST
:WINVI
set osver="Windows Vista"
goto TEST
:WINXP
set osver="Windows XP"
goto TEST
:TEST
if exist %windir%\SysWOW64\NUL goto X64 else goto X32
:X32
echo Sie haben %osver% 32bit
goto ENDE
:X64
echo Sie haben %osver% 64bit
goto ENDE
:ENDE
pause
endlocal
Das ^ vor der Pipe | gehört da nicht hin.
findstr "Windows XP" sucht nach Windows oder XP, bei dem Parameter /C: muss die Zeichenfolge komplett stimmen.
set /p wartet auf einen Prompt
zu einem setlocal gehört auch ein endlocal
Gruß,
Schorsch
Hallo Sp33dy,
habe das ganze nicht getestet, aber was auffällt ist folgendes:
So sieht es bei dir aus.
- Die Maskierung der Pipe außerhalb einer FOR Schleife ist Unsinnn.
- Bei FINDSTR wird zudem nach Windows ODER 7 gesucht.
Also ändere die entsprechenden Zeilen erst mal in der Form ab:
Grüße
rubberman
<EDIT>
Moin DerSchorsch und Xaero1982, da wollten wir uns wohl gegenseitig überholen
</EDIT>
habe das ganze nicht getestet, aber was auffällt ist folgendes:
1
wmic path win32_operatingsystem get caption^|FINDSTR "Windows 7" && goto WIN7
- Die Maskierung der Pipe außerhalb einer FOR Schleife ist Unsinnn.
- Bei FINDSTR wird zudem nach Windows ODER 7 gesucht.
Also ändere die entsprechenden Zeilen erst mal in der Form ab:
1
wmic path win32_operatingsystem get caption|FINDSTR /c:"Windows 7" && goto WIN7
Grüße
rubberman
<EDIT>
Moin DerSchorsch und Xaero1982, da wollten wir uns wohl gegenseitig überholen
</EDIT>