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. Dadurch habe ich die Möglichkeit, nach Windows XP, Windows Vista, Windows 7 usw. zu suchen, nicht aber nach Windows 10. Ich kann nicht "Ausführen" sagen Aktion, wenn das System nicht XP oder Vista ist ", daher muss ich sagen" Diese Aktion auf allen Plattformen ausführen, 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?
Sie können wmic
verwenden.
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:
@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
gespeichert, die Service Pack-Hauptversion in %_sp%
und die Architektur in %_bits%
.
Anmerkungen:
Nicht vollständig getestet, da ich nicht alle Betriebssystem- und Service Pack-Kombinationen zum Testen habe.
Der Befehl for
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).
%_os
wird auf einen der folgenden Werte gesetzt: Server
, Vista
, 7
, 8
, 8.1
oder 10
.
Beispielausgabe:
F:\test>GetOS
Operating System Version: 7
Service Pack Major Version: 1
Architecture: 64-bit
F:\test>
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.
Ich habe keine Erfahrung mit InstallAnywhere, aber es gibt zwei Optionen, um mithilfe einer Befehlszeile festzustellen, welches Betriebssystem installiert ist.
Verwenden von Cmd
systeminfo.exe
Mit dem Befehl systeminfo.exe
können Sie das Ergebnis von unter dem Feld OS Name
sehen. Dadurch erhalten Sie möglicherweise mehr Informationen, als Sie benötigen.
Weitere Informationen zu diesem Befehl finden Sie in Microsoft TechNet .
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 }