Wie kann ich mithilfe der Befehlszeile feststellen, ob mein System Windows 10 ist? [Duplikat]

32

Diese Frage hat hier bereits eine Antwort:

Ich arbeite mit InstallAnywhere, einem alten Programm zum Erstellen von Installationsprogrammen. Ich möchte eine bestimmte Datei nur unter Windows XP und Windows Vista installieren.

Aufgrund der Einschränkungen von InstallAnywhere ist dies nicht möglich. Ich kann mich nur dazu entschließen, die Datei zu löschen, nachdem sie auf der Grundlage einer Regel bereits installiert wurde.

Innerhalb dieser Regel kann ich nach der Plattform suchen, auf der ich ausgeführt werde. Auf diese Weise kann ich nach Windows XP, Windows Vista, Windows 7 usw. suchen, aber nicht nach Windows 10. Ich kann nicht sagen, dass dies ausgeführt wird Aktion, wenn das System nicht XP oder Vista ist ", also muss ich sagen" Führen Sie diese Aktion auf allen Plattformen durch, die nicht XP oder Vista sind ".

Ich kann jedoch Befehlszeilenbefehle starten und das Ergebnis abrufen. Hier ist meine Frage: Gibt es einen Befehl, mit dem ich feststellen kann, ob ich auf einem Windows 10-System arbeite?

Dominique
quelle
winverWenn Sie cmd oder Start eingeben, wird das Dialogfeld Über Windows angezeigt. Funktioniert das? Alternativ - stackoverflow.com/questions/1792740/…
Tetsujin
Vielen Dank für die Antwort, aber ich suche nach einem Befehlszeilenbefehl, der eine Antwort in der Befehlszeile gibt. Ich kann die Informationen nicht stapelweise verwenden, wenn ein Nachrichtenfenster angezeigt wird.
Dominique
Überprüfen Sie die cmd.exe-Version. Sie ist die einfachste und wird mindestens seit XP unterstützt. Es gibt eine Frage dazu.
KeyWeeUsr
2
google cmd versions, jedes os hat eine andere Versionsnummer, das kannst du überprüfen und du brauchst kein unnötiges langes Skript oder ein anderes Programm - hier
KeyWeeUsr
5
Einfach tippen ver. Auf meinem Windows 7-System erhalte ich beispielsweise "Microsoft Windows [Version 6.1.7601]", das angibt, dass ich Windows 7 (mit der Versionsnummer 6.1 ) verwende.
Andreas Rejbrand

Antworten:

54

Gibt es einen Befehl, um festzustellen, ob ich auf einem Windows 10-System arbeite?

Sie können verwenden wmic.

Der folgende Befehl gibt die Windows-Version zurück.

wmic os get Caption | findstr /v Caption

Beispielausgabe:

F:\test>wmic os get Caption | findstr /v Caption
Microsoft Windows 7 Home Premium

Wenn Sie etwas mehr Informationen wünschen, können Sie die folgende Batch-Datei (GetOS.cmd) verwenden, die abgerufen und angezeigt wird:

  • Betriebssystemversion
  • Service Pack Major Version
  • Architektur (64 oder 32 Bit)
@echo off
setlocal
setlocal enabledelayedexpansion
set _os=
set _sp=
rem use findstr to strip blank lines from wmic output
rem get OS
for /f "usebackq skip=1 tokens=3" %%i in (`wmic os get caption ^| findstr /r /v "^$"`) do (
  set "_os=%%i"
  )
rem get Service Pack
for /f "usebackq skip=1 tokens=*" %%i in (`wmic os get ServicePackMajorVersion ^| findstr /r /v "^$"`) do (
  set "_sp=%%i"
  )
rem get Architecture
for /f "usebackq skip=1 tokens=*" %%i in (`wmic OS get OSArchitecture ^| findstr /r /v "^$"`) do (
  set "_bits=%%i"
  )
echo Operating System Version: %_os%
echo Service Pack Major Version: %_sp%
echo Architecture: %_bits%
endlocal

Die Betriebssystemversion ist in %_os, die Service Pack-Hauptversion in %_sp%und die Architektur in gespeichert %_bits%.

Anmerkungen:

  • Nicht vollständig getestet, da ich nicht alle Betriebssystem- und Service Pack-Kombinationen zum Testen habe.

  • Der forBefehl ruft nur den dritten Teil (Token) des Betriebssystems ab. Dies funktioniert für die Desktop-Versionen (wenn Sie Server 2008 von anderen Versionen unterscheiden möchten, müssen Sie eine andere Lösung finden).

  • %_oswird auf einen der folgenden Werte gesetzt werden: Server, Vista, 7, 8, 8.1oder 10.

Beispielausgabe:

F:\test>GetOS
Operating System Version: 7
Service Pack Major Version: 1
Architecture: 64-bit

F:\test>

Weitere Lektüre

DavidPostill
quelle
2
Nach einigen Tests habe ich beschlossen, den folgenden Befehl zu verwenden:wmic os get Caption | findstr /V Caption
Dominique
@ DavidPostill Ich habe die Batch-Datei getestet. Ich denke, es braucht ein pauseVorzeichen endlocal, um dem Benutzer die Möglichkeit zu geben, die Ausgabe zu lesen, bevor das Fenster geschlossen wird. Folgt das auch für Sie?
Matthew
1
@Matthew Ich denke, die Erwartung ist, dass ein anderes System die Batch-Datei ausführt und deren Ausgabe aufzeichnet (oder sie manuell von einem vorhandenen Eingabeaufforderungsfenster aus aufruft).
TripeHound
@ Mathew Pause ist nicht erforderlich, wenn Sie an der Eingabeaufforderung cmd ausgeführt werden. Die Antwort ist, die Technik zu zeigen und nicht alle Szenarien zu erfüllen.
DavidPostill
1
@mathew öffnen Sie eine cmd-Eingabeaufforderung, in der Sie die Datei gespeichert haben, und geben Sie getos
DavidPostill ein.
35

Ich kann so lange nicht glauben und kein Befehl

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

Es funktioniert in Weiterleitungen, so dass Sie tun können

ver | find "Version 10."

Normalerweise sollten Sie jedoch "für diese und alle zukünftigen Versionen" schreiben, damit Sie die vorherigen besser durchgehen können.

Joshua
quelle
Zu Ihrer Information: In PowerShell verfunktioniert dies nicht . Es ist CMDspezifisch.
Keltari
3
@ Keltari Tut es iex "ver"aber!
Ben N
Die Ausgabe von verkann etwas irreführend sein. Auf der Maschine, auf der ich gerade sitze, kehrt sie zurück Microsoft Windows [Version 6.1.7601]. Aber ich bin mir ziemlich sicher, dass Windows 7 läuft, nicht Windows 6.
Philipp
@Philipp Ja, Windows 7 und 8 sind "echte" Patch-Versionen von Vista, 6.1 und 6.2. die Hauptversionsbeule ist ausschließlich Marketing. Ich weiß nicht, ob die Änderungen in Windows 10 bedeutend genug sind, um eine größere Versionserhöhung zu rechtfertigen. (Aus der Perspektive des Hardline-Software-Engineerings sollte die Hauptversion einer Software immer nur gestoßen werden, um eine Abwärtskompatibilitätsunterbrechung anzuzeigen .
Daraus
1
@Philipp - es ist einfach, eine Karte von der Versionsnummer bis zu Marketingnamen zu finden, z. B. hier
davidbak
18

Systeminformationen

erhält viele nützliche Informationen wie Betriebssystem, Systemtyp (32/64 Bit) und so lange:

Bildbeschreibung hier eingeben

Kumpel
quelle
Ja, würde ich auch empfehlen systeminfo. Wie Sie aus dem obigen Bild ersehen können, zeigt es Ihr Betriebssystem sowie andere Informationen an, die Sie möglicherweise benötigen.
Matthew
3
Danke für die schnelle Antwort. systeminfogibt in der Tat die Informationen, die ich suche (daher die positive Bewertung), aber es dauert ziemlich lange (auf meinem PC dauert es mehr als 15 Sekunden). Deshalb habe ich mich für die wmicLösung entschieden, die in der nächsten Antwort zu finden ist.
Dominique
1
Dies ist, was ich die Leute cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
auffordern
1
Die Ausgabe von systeminfo ist sprachabhängig und daher ziemlich nutzlos, wenn Sie es nicht in größerem Maßstab ausführen möchten
Stephan
1

Ich habe keine Erfahrung mit InstallAnywhere, aber es gibt zwei Optionen, um mithilfe einer Befehlszeile festzustellen, welches Betriebssystem installiert ist.

  1. Verwenden von Cmd

    systeminfo.exe
    

    Mit dem Befehl systeminfo.exekönnen Sie das Ergebnis von unter dem Feld sehen OS Name. Dadurch erhalten Sie möglicherweise mehr Informationen, als Sie benötigen.

    Weitere Informationen zu diesem Befehl finden Sie in Microsoft TechNet .

  2. Power Shell

    Alternativ können Sie das folgende Powershell-Skript verwenden, das die genauen gewünschten Informationen zurückgibt.

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
Tim Mahood
quelle