OS-name auselesen: Windows 7 Enterprise hat standardmäßig ein Leerzeichen am Ende vom Namen? Echt jetzt?
Hallo allerseits.
Ich bin leicht schockiert...
Ich schreibe heute eine kleine Batch, die am Anfang eine kleine Auswahl von Betriebssystemen ausliest und je nach OS entsprechend weiter läuft.
Seit Stunden teste ich und frage mich, warum es überall weiter läuft wie gewünscht, außer bei Windows 7 Enterprise.
(Getestet unter Windows 10 Enterprise, Windows 8.1 Enterprise und Windows 7 Enterprise.)
Dann hab ich spaßeshalber mal den Namen des OS ausgelesen und stelle fest - da ist ein Leerzeichen standardmäßig am Ende?
Und sobald ich da ein Leerzeichen einfüge im Skript, geht der Mist auf einmal...
(OS-Name wird ausgelesen aus systeminfo.exe)
Liegt das irgendwie an mir? Ich kann einfach nicht glauben, dass Microsoft standardmäßig am Ende des OS-Namens ein Leerzeichen hat...
Das wäre mal ein mega Fail, und woher soll man sowas denn wissen / erahnen...
Muss ich jetzt ernsthaft für alle Betriebssysteme eine Testumgebung machen, nur um zu prüfen, ob noch irgendwo Fallen in den OS-Namen versteckt sind - oder gibt es dazu vielleicht eine Übersicht, die bei "Fails" in Windows-OS-Namen hinweist?
Andernfalls - wie könnte ich das besser lösen?
Code:
Gruß
Yauhun
Ich bin leicht schockiert...
Ich schreibe heute eine kleine Batch, die am Anfang eine kleine Auswahl von Betriebssystemen ausliest und je nach OS entsprechend weiter läuft.
Seit Stunden teste ich und frage mich, warum es überall weiter läuft wie gewünscht, außer bei Windows 7 Enterprise.
(Getestet unter Windows 10 Enterprise, Windows 8.1 Enterprise und Windows 7 Enterprise.)
Dann hab ich spaßeshalber mal den Namen des OS ausgelesen und stelle fest - da ist ein Leerzeichen standardmäßig am Ende?
Und sobald ich da ein Leerzeichen einfüge im Skript, geht der Mist auf einmal...
(OS-Name wird ausgelesen aus systeminfo.exe)
Liegt das irgendwie an mir? Ich kann einfach nicht glauben, dass Microsoft standardmäßig am Ende des OS-Namens ein Leerzeichen hat...
Das wäre mal ein mega Fail, und woher soll man sowas denn wissen / erahnen...
Muss ich jetzt ernsthaft für alle Betriebssysteme eine Testumgebung machen, nur um zu prüfen, ob noch irgendwo Fallen in den OS-Namen versteckt sind - oder gibt es dazu vielleicht eine Übersicht, die bei "Fails" in Windows-OS-Namen hinweist?
Andernfalls - wie könnte ich das besser lösen?
Code:
for /f "tokens=2 delims=:" %%a in ('systeminfo.exe ^| find "OS Name"') do set OS_Name=%%a
for /f "tokens=* delims= " %%a in ("%OS_Name%") do set OS_Name=%%a
echo.
echo Your OS is "%OS_Name%".
echo.
if /i "%OS_Name%"=="Microsoft Windows 7 Home Basic" goto win_7_e
if /i "%OS_Name%"=="Microsoft Windows 7 Home Premium" goto win_7_e
if /i "%OS_Name%"=="Microsoft Windows 7 Professional" goto win_7_e
if /i "%OS_Name%"=="Microsoft Windows 7 Enterprise " goto win_7_e
if /i "%OS_Name%"=="Microsoft Windows 7 Ultimate" goto win_7_e
if /i "%OS_Name%"=="Microsoft Windows 8" goto win_8_e
if /i "%OS_Name%"=="Microsoft Windows 8 Pro" goto win_8_e
if /i "%OS_Name%"=="Microsoft Windows 8 Enterprise" goto win_8_e
if /i "%OS_Name%"=="Microsoft Windows 8.1" goto win_8_e
if /i "%OS_Name%"=="Microsoft Windows 8.1 Pro" goto win_8_e
if /i "%OS_Name%"=="Microsoft Windows 8.1 Enterprise" goto win_8_e
if /i "%OS_Name%"=="Microsoft Windows 10 Home" goto win_10_e
if /i "%OS_Name%"=="Microsoft Windows 10 Pro" goto win_10_e
if /i "%OS_Name%"=="Microsoft Windows 10 Enterprise" goto win_10_e
if not exist %SystemRoot%\system32\systeminfo.exe goto :warning
set OS_Name=
endlocal
Gruß
Yauhun
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 319284
Url: https://administrator.de/contentid/319284
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
7 Kommentare
Neuester Kommentar
powershell -Executionpolicy Bypass -command "(gwmi win32_OperatingSystem).Caption.Trim()"
Hallo Yauhun.
Vergiss die Namen und nimm die Versionsnummer. Entweder parse die Ausgabe von WMIC OS oder althergebracht die von VER.
Etwa so
Grüße
rubberman
Vergiss die Namen und nimm die Versionsnummer. Entweder parse die Ausgabe von WMIC OS oder althergebracht die von VER.
Etwa so
@echo off &setlocal
setlocal EnableDelayedExpansion
for /f "tokens=2 delims=" %%i in ('ver') do set "version=%%i"
for /f "tokens=1-3 delims=." %%i in ("!version:* =!") do (endlocal&set /a "major=%%i,minor=%%j,build=%%k")
call :ver_%major%_%minor%
pause
exit /b
:ver_5_1
echo XP
exit /b
:ver_5_3
echo XP (64 Bit), Server 2003
exit /b
:ver_6_0
echo Vista, Server 2008
exit /b
:ver_6_1
echo Win7, Server 2008 R2
exit /b
:ver_6_2
echo Win8, Server 2012
exit /b
:ver_6_3
echo Win8.1, Server 2012 R2
exit /b
:ver_10_0
echo Win10, Server 2016
exit /b
rubberman