sp33dy
Goto Top

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"

Content-Key: 132364

Url: https://administrator.de/contentid/132364

Printed on: April 19, 2024 at 11:04 o'clock

Member: Arano
Arano Dec 28, 2009 at 11:50:25 (UTC)
Goto Top
Ich kann da so keinen Fehler erkennen, aber bin auch kein Windows Anwender mehr.

Du könntest aber mal das versuchen:
..
...
wmic path win32_operatingsystem get caption^|FINDSTR "Windows XP" && goto WINXP  
cls
echo Unbekannte Windows Version
goto ENDE
:WIN7
...
..
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
Member: Sp33dy
Sp33dy Dec 28, 2009 at 12:15:31 (UTC)
Goto Top
hmmm

Wie müsste ich die BatchDatei abändern damit es genau das macht was ich bezwecke

Komme irgendwie nicht weiter
Member: Xaero1982
Xaero1982 Dec 28, 2009 at 12:29:43 (UTC)
Goto Top
Ahoi,

@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 face-smile Set /p erfordert nen Prompt und ^ liefert invalid get expression...
Member: DerSchorsch
DerSchorsch Dec 28, 2009 at 12:31:02 (UTC)
Goto Top
Hallo,

versuchs mal damit:
@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
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
Member: rubberman
rubberman Dec 28, 2009 at 12:36:39 (UTC)
Goto Top
Hallo Sp33dy,

habe das ganze nicht getestet, aber was auffällt ist folgendes:
wmic path win32_operatingsystem get caption^|FINDSTR "Windows 7" && goto WIN7  
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:
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 face-wink
</EDIT>
Member: Sp33dy
Sp33dy Dec 28, 2009 at 12:44:54 (UTC)
Goto Top
Danke euch allen

Wäre wohl nicht so schnell darauf gekommen^^