找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 5646|回复: 5

[注册表类] [已解决]批处理根据注册表判断系统版本号

[复制链接]
发表于 2025-4-26 08:54:24 | 显示全部楼层 |阅读模式
写了一个读取注册表项,判断系统版本号的批处理,win7下测试:假如没有HKEY_LOCAL_MACHINE\SYSTEM\Setup\Service Reporting API\Components\CoreOS,Version值,以下脚本得到的结果是:
  1. C: │本地系统│Windows 7 Ultimate│x64│(.7601)
复制代码
,而我想要的结果是:
  1. C: │本地系统│Windows 7 Ultimate│x64│(6.1.7601)
复制代码
,以下脚本不知错在哪里了,请各位高手指导一下,谢谢了!
  1. @echo off
  2. ::以下内容,PE下无效
  3. if /i not "%systemdrive%"=="X:" set LoadrV=C:
  4. if /i "%systemdrive%"=="X:" set LoadrV=X:
  5. rem 查询系统类型
  6. if exist %Windir%\SysWOW64 (set LoaOsarch=x64) else if not exist %Windir%\SysWOW64 (set LoaOsarch=x86) else set "LoaOsarch=???"
  7. )
  8. rem 查询系统版本号,
  9. for /f "tokens=3" %%c in ('reg query "HKLM\SYSTEM\Setup\Service Reporting API\Components\CoreOS" /v Version 2^>nul ^| findstr /i "REG_SZ"') do set LoaVer=%%c
  10. rem 如果上面未查询到版本号,则在此处查询
  11. if not defined LoaVer (
  12. for /f "tokens=3" %%f in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion 2^>nul ^| findstr /i "REG_SZ"') do set LoaVer=%%f
  13. for /f "tokens=3" %%g in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuildNumber 2^>nul ^| findstr /i "REG_SZ"') do set LoaVer=%LoaVer%.%%g
  14. )
  15. rem 查询系统名称
  16. for /f "tokens=3*" %%d in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul ^| findstr /i "REG_SZ"') do set LoaName=%%d %%e
  17. echo;%LoadrV%│本地系统│%LoaName%│%LoaOsarch%│^(%LoaVer%^)
  18. )
  19. @echo on
  20. pause&&goto :eof
复制代码
自己解决了,分享给大家,谢谢大伙的帮助
  1. @echo off
  2. ::以下内容,PE下无效
  3. if /i not "%systemdrive%"=="X:" set LoadrV=C:
  4. if /i "%systemdrive%"=="X:" set LoadrV=X:
  5. setlocal enabledelayedexpansion
  6. rem 查询系统类型
  7. if exist %Windir%\SysWOW64 (set LoaOsarch=x64) else if not exist %Windir%\SysWOW64 (set LoaOsarch=x86) else set "LoaOsarch=???"
  8. )
  9. rem 查询系统版本号
  10. for /f "tokens=3" %%c in ('reg query "HKLM\SYSTEM\Setup\Service Reporting API\Components\CoreOS" /v Version 2^>nul ^| findstr /i "REG_SZ"') do set LoaVer=%%c
  11. rem 如果上面未查询到版本号,则在此处查询
  12. if not defined LoaVer (
  13. for /f "tokens=3" %%f in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion 2^>nul ^| findstr /i "REG_SZ"') do set LoaVer=%%f
  14. for /f "tokens=3" %%g in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuildNumber 2^>nul ^| findstr /i "REG_SZ"') do set LoaVer=!LoaVer!.%%g
  15. )
  16. rem 查询系统名称
  17. for /f "tokens=3*" %%d in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul ^| findstr /i "REG_SZ"') do set LoaName=%%d %%e
  18. echo;%LoadrV%│本地系统│%LoaName%│%LoaOsarch%│^(%LoaVer%^)
  19. )
  20. endlocal
  21. @echo on
  22. pause&&goto :eof
复制代码
发表于 2025-4-26 10:52:17 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-26 12:33 编辑

回复 1# zhoubin

其实从 wmic os get ... 即可抓取全部所需参数,如下版本...

  1. @echo off &setlocal &for /f "tokens=1-2* delims== " %%a in ('wmic os get caption^,OSArchitecture^,version /value^|find "=" ') do if not defined c (set "c=%%c") else if not defined a (set "a=%%b") else if not defined v (set "v=%%b")
  2. set/p="%systemDrive% |本地系统|%c%|x%a%|(%v%)"<nul
  3. echo,&pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
zhoubin + 1 感谢帮助

查看全部评分

发表于 2025-4-26 10:52:51 | 显示全部楼层
本帖最后由 flashercs 于 2025-4-26 10:58 编辑

win7测试正常.
可能是你机器注册表的问题:
注册表HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion缺少了CurrentVersion
  1. rem 如果上面未查询到版本号,则在此处查询
  2. if not defined LoaVer (
  3. for /f "tokens=4 delims=[] " %%g in ('ver') do set LoaVer=%%g
  4. )
复制代码

评分

参与人数 1技术 +1 收起 理由
zhoubin + 1 感谢帮助!

查看全部评分

发表于 2025-4-26 12:30:25 | 显示全部楼层
自己制作PE系统可以使用ADK添加组件wmi,powershell,vbscript,hta
 楼主| 发表于 2025-4-26 13:45:35 | 显示全部楼层
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion有CurrentVersion,我再看看,谢谢
 楼主| 发表于 2025-4-26 14:21:07 | 显示全部楼层
本帖最后由 zhoubin 于 2025-4-27 06:10 编辑

测试的1楼批处理时,剪切HKEY_LOCAL_MACHINE\SYSTEM\Setup\Service Reporting API\Components\CoreOS,Version值,到记事本保存,
测试完成后,再粘贴恢复Version值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:25 , Processed in 0.019785 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表