首页 > 解决方案 > 批量获取准确的 Windows 版本

问题描述

我需要在批处理文件中获取我的操作系统的确切 Windows 版本,并且我想将它存储为一个变量。我需要像 14393.3144 这样的完整版本(如果winver使用则显示),因为我想检查是否成功安装了更新。我已经尝试过使用wmic os get buildnumber,但它只返回 14393。除此之外,我还考虑阅读 Windows 更新日志,但使用 powershell 命令创建它只Get-WindowsUpdateLog需要很多时间并且不够可靠。

标签: windowsbatch-file

解决方案


这是一个使用检索完整版本的示例:

@Set "OSVer="
@For /F EOL^=V %%A In ('"%__AppDir__%wbem\WMIC.exe" OS Get Version 2^>NUL')Do @For %%B In (%%A)Do @Set "OSVer=%%B"
@Set OSVer 2>NUL&&Pause

在测试机器上,这刚刚返回10.0.18362


您当然可以使用内部Ver命令,(从技术上讲,它返回的版本cmd.exe,而不是操作系统)

@Set "OSVer="
@For /F Delims^=] %%A In ('Ver')Do @For %%B In (%%A)Do @Set "OSVer=%%B"
@Set OSVer 2>NUL&&Pause

在测试机器上,这刚刚返回10.0.18362.295


您当然也可以尝试解析注册表以获取信息:

@Set "RKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
@For /F Tokens^=2* %%A In ('^""%__AppDir__%reg.exe" Query "%RKey%" /V CurrentBuildNumber^" 2^>NUL')Do @Set "NUM=%%B"
@For /F Tokens^=2* %%A In ('^""%__AppDir__%reg.exe" Query "%RKey%" /V UBR^" 2^>NUL')Do @Set /A UBR=%%B 2>NUL
@Echo(%NUM%.%UBR%&Pause

在测试机器上,这刚刚返回18362.295



或者,看看这个超级用户问题和答案。


推荐阅读