如何使用命令行确定我的系统是否为Windows 10?[重复]


32

这个问题已经在这里有了答案:

我正在使用InstallAnywhere,这是一个用于创建安装程序的旧程序。我只想安装特定文件,仅在Windows XP和Windows Vista的情况下。

由于InstallAnywhere的限制,这是不可能的。根据规则,我只能决定删除已安装的文件。

在该规则内,我可以检查运行的平台,这使我可以检查Windows XP,Windows Vista,Windows 7等,但不能检查Windows10。我不能说“执行此操作”。系统不是XP或Vista时执行此操作”,因此我需要说“在非XP或Vista的所有那些平台上执行此操作”。

但是,我可以启动命令行命令并捕获结果,所以这是我的问题:是否存在可以用来确定我是否在Windows 10系统上工作的命令?


winver如果键入cmd或“开始”,将弹出“关于Windows”对话框。那行得通吗?或者- stackoverflow.com/questions/1792740/...
铁人

感谢您的答复,但是我正在寻找在命令行中给出答案的命令行命令,当弹出消息框时,我无法以批处理方式使用该信息。
多米尼克

检查cmd.exe版本,它是自XP以来最简单且受支持的版本。有一个问题。
KeyWeeUsr's

2
google cmd版本,每个操作系统都有不同的版本号,您可以检查该版本号,并且不需要任何不必要的长脚本或其他程序- 此处
KeyWeeUsr

5
只需键入ver。例如,在Windows 7系统上,我得到“ Microsoft Windows [Version 6.1.7601]”,它告诉我我正在运行Windows 7(版本号为6.1)。
Andreas Rejbrand '16

Answers:


54

是否有命令确定我是否在Windows 10系统上工作?

您可以使用wmic

以下命令将返回Windows版本。

wmic os get Caption | findstr /v Caption

输出示例:

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

如果需要更多信息,可以使用以下批处理文件(GetOS.cmd),该文件将检索并显示:

  • 作业系统版本
  • Service Pack主要版本
  • 架构(64位或32位)
@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

OS版本存储在中%_os,Service Pack主要版本存储在中%_sp%,体系结构存储在中%_bits%

笔记:

  • 没有完全测试,因为我没有所有的操作系​​统和Service Pack组合都可以对其进行测试。

  • for命令仅检索操作系统的第3部分(令牌)。这将适用于台式机版本(如果要将Server 2008与其他版本区分开,则需要找到其他解决方案)。

  • %_os将被设置为以下值中的一个:ServerVista788.110

输出示例:

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

F:\test>

进一步阅读


2
经过一些测试,我决定使用以下命令:wmic os get Caption | findstr /V Caption
Dominique

@DavidPostill我已经测试了批处理文件。我认为需要在pause之前endlocal给用户一个机会,以使用户有机会在窗口关闭之前阅读输出。那也跟着你吗?
马修

1
@Matthew我认为期望是其他一些系统将运行该批处理文件并捕获其输出(或者将从现有的Command提示符窗口手动调用它)。
TripeHound

从cmd提示符运行@mathew暂停是不必要的。答案是展示技术,而不是适合所有情况。
DavidPostill

1
@mathew打开一个cmd提示符,您在其中保存了文件并键入getos
DavidPostill

35

我不敢相信这么久,没有ver命令

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

它可以重定向,因此您可以执行

ver | find "Version 10."

但是您通常应该编写“针对此版本和所有以后的版本”,因此最好对之前的版本进行枚举。


仅供参考ver不能在PowerShell中使用。这是CMD具体的。
Keltari '16

3
@Keltari但是iex "ver"
本N

的输出ver可能会产生误导。我现在坐在机器上,它返回Microsoft Windows [Version 6.1.7601]。但我可以肯定它运行的是Windows 7,而不是
Windows6。– Philipp

@Philipp是的,Windows 7和Windows 8分别是Vista,6.1和6.2的“真正”补丁程序版本;主要版本的障碍是严格的营销。我不知道Windows 10中的更改是否足够重大以至于需要进行重大版本改进。(从强硬软件工程的角度看,任何软件的主要版本都应该被颠倒以表明向后兼容性中断;这是因为大型主要版本很差。不幸的是,市场部门喜欢大量。)
zwol

1
@Philipp-它很容易找到从版本号到市场名称的地图,例如,这里
davidbak '16

18

系统信息

获取许多有用的信息,例如操作系统,系统类型(32/64位)等等,时间如此长:

在此处输入图片说明


是的,我也建议systeminfo。从上图可以看到,它将显示您的操作系统以及您可能需要的其他信息。
马修

3
感谢您的快速回复。systeminfo确实提供了我正在寻找的信息(因此需要投票),但是它需要花费一些时间(在我的PC上需要15秒钟以上)。因此,我选择wmic了下一个答案中找到的解决方案。
多米尼克

1
这是我要求人们在需要查找运行的os / version时要运行的文件:cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Andrew Savinykh 2016年

1
systeminfo的输出取决于语言,因此如果您想大规模运行它,那将毫无用处
Stephan

1

我对InstallAnywhere没有任何经验,但是有两个选项可以查看使用命令行安装的操作系统。

  1. 使用Cmd

    systeminfo.exe
    

    使用该命令systeminfo.exe,您可以在字段下查看结果OS Name。这可能会为您提供比您所需更多的信息。

    可以在Microsoft TechNet中找到有关此命令的更多信息。

  2. 电源外壳

    或者,您可以使用以下Powershell脚本,该脚本将返回所需的确切信息。

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.