simmersurfer
Goto Top

DOS Batch OS Abfragen und weitere Befehle abarbeiten ( Goto - Label )

Hallo,
auch wenn es diese in ähnlicher Art bestimmt schon gab, so helfen mir verschiedene Beiträge nicht weiter. Daher nun als neuer Beitrag.

Der Ablauf bzw. das Erkennen des Operating Systems ist ok ( es erscheint z.B. W7 ), nur wird dann nicht weiter zum Label :OS_W7 gesprungen, sondern Zeile für Zeile weiter abgearbeitet ( test123... erscheint ).
Der ping ist für mich nur wie ein sleep...


Was ist hier verkehrt?

Vielen Dank für eure Hilfe
Schöne Grüße aus HH

ver |findstr . | (find /v " 5.1" || echo XP && goto :OS_XP) | (find /v  " 6.1" || echo W7 && goto :OS_W7) | (find /v "." || echo Anderes && goto :Anderes )  

echo test123_falscherWeg

:OS_XP
echo Hier sind XP Befehle
ping -n 5 127.0.0.1 > NUL
exit /b 

:OS_W7
echo Hier sind W7 Befehle
ping -n 5 127.0.0.1 > NUL
exit /b

:Anderes
echo Anderes OS - keine Befehle
ping -n 5 127.0.0.1 > NUL
exit /b

Content-ID: 202345

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

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

Snowman25
Snowman25 25.02.2013 um 16:53:15 Uhr
Goto Top
Hallo @simmersurfer,

Der &&-Operator führt nur dann den rechten Befehl aus, wenn der ERRORLEVEL auf 0 steht. Allerdings setzt ECHO diesen auf 1.
Benutze den &-Operator hierfür!

Gruß
Snow
simmersurfer
simmersurfer 26.02.2013 um 11:53:39 Uhr
Goto Top
Hallo Snow,
danke für die Antwort, das hatte ich so schon einmal getestet - und hilft leider auch nicht...

... echo W7 & goto :OS_W7...


Gruß
Snowman25
Snowman25 26.02.2013 um 12:20:52 Uhr
Goto Top
Hey,

Sorry, hatte da 'nen Wurm beim Testen drin. ECHO fasst den Errorlevel garnicht an.
FIND Gibt einen Errorlevel von 1 aus, wenn der Suchbegriff nicht gefunden wurde. Jedoch scheint der Errorlevel IMMER 0 zu sein, wenn der /v-Paramenter vorhanden ist.
Klammer das ganz ordentlich und unmissverständlich ein, dann sollte es auch gehen. Falls nicht musst du den Weg über Hilfsvariablen und mehrzeilige IF-Statements gehen.

Gruß
Snow
simmersurfer
simmersurfer 26.02.2013 um 14:36:56 Uhr
Goto Top
Hallo,
habe nach den Errorlevels gesucht und ein Script gefunden, was ich nun angepasst habe. Das hilft mir jetzt für die weiteren Befehle etc. absolut weiter...

Ist etwas mehr, aber falls es jemand doch gebrauchen kann, setze ich das hier mit rein.

Snow, Schönen Dank!


@echo off

ver | find "2003" > nul  
if %ERRORLEVEL% == 0 goto ver_2003

ver | find "XP" > nul  
if %ERRORLEVEL% == 0 goto ver_xp

ver | find "2000" > nul  
if %ERRORLEVEL% == 0 goto ver_2000

if not exist %SystemRoot%\system32\systeminfo.exe goto warnexit

REM bezeichnung deutsch / englisch beachten!!!
systeminfo | find "Betriebssystemname" > %TEMP%\osname.txt  
FOR /F "usebackq delims=: tokens=2" %%i IN (%TEMP%\osname.txt) DO set vers=%%i  

echo %vers% | find "Windows 7" > nul  
if %ERRORLEVEL% == 0 goto ver_7

echo %vers% | find "Windows 8" > nul  
if %ERRORLEVEL% == 0 goto ver_8

REM evtl. im englischen doppelR in Serverr !!!
echo %vers% | find "Windows Server 2008" > nul  
if %ERRORLEVEL% == 0 goto ver_2008

echo %vers% | find "Windows Vista" > nul  
if %ERRORLEVEL% == 0 goto ver_vista

goto warnexit

:ver_7
:Run Windows 7 specific commands here.
echo Windows 7
goto exit

:ver_8
:Run Windows 8 specific commands here.
echo Windows 8
goto exit

:ver_2008
:Run Windows Server 2008 specific commands here.
echo Windows Server 2008
goto exit

:ver_vista
:Run Windows Vista specific commands here.
echo Windows Vista
goto exit

:ver_2003
:Run Windows Server 2003 specific commands here.
echo Windows Server 2003
goto exit

:ver_xp
:Run Windows XP specific commands here.
echo Windows XP
goto exit

:ver_2000
:Run Windows 2000 specific commands here.
echo Windows 2000
goto exit

:warnexit
echo Betriebssystem unbekannt.

:exit