无忧启动论坛

 找回密码
 注册
搜索

判断当前系统版本-批处理代码测试

查看数: 681 | 评论数: 41 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-11-12 18:16

正文摘要:

本帖最后由 倒垃圾的歌者 于 2024-11-13 13:14 编辑 文件 如果你觉得有用就发个Windows X系统通过

回复

zqfeng01 发表于 前天 11:04
感謝分享
jing998 发表于 前天 10:57
感谢分享,下载保存了
孟仁飞 发表于 前天 10:02
学习
qitiandashe1020 发表于 前天 09:57
倒垃圾的歌者 发表于 2024-11-12 19:22
你要的话我可以给你改进一下

谢谢大佬
wangyibin 发表于 前天 09:29
倒垃圾的歌者 发表于 2024-11-12 19:19
chatgpt不可全信,我举个例子,比如
我这段的意思是如果输出结果中只要包含“10”这个字符串的,就设定 ...

根据已知问题进行了修改
  1. [url=home.php?mod=space&uid=336905]@echo[/url] off
  2. cd /d "%~dp0"
  3. title 检测当前系统版本
  4. color f0
  5. (cacls "%SystemDrive%\System Volume Information" >nul 2>&1) || (
  6.     start "" mshta vbscript:CreateObject^("Shell.Application"^).ShellExecute^("%~snx0"," %*","","runas",1^)^(window.close^)
  7.     exit /b
  8. )

  9. :: 获取系统版本信息
  10. for /f "tokens=2* skip=2" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do set SystemVersion=%%b
  11. for /f "tokens=2* skip=2" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CurrentBuild"') do set BuildVersion=%%b

  12. :: 输出调试信息
  13. echo 检测到的系统版本: %SystemVersion%
  14. echo 检测到的内部版本号: %BuildVersion%

  15. :: 检查系统版本,确保精确匹配
  16. if /i "%SystemVersion%"=="Windows XP" goto WinXP
  17. if /i "%SystemVersion%"=="Windows 7" goto Win7
  18. if /i "%SystemVersion%"=="Windows 8" goto Win8
  19. if /i "%SystemVersion%"=="Windows 10 Pro" (
  20.     if %BuildVersion% GEQ 22000 goto Win11
  21.     goto Win10
  22. )

  23. :: 未检测到已知版本时的处理
  24. echo 无法检测到已知的 Windows 版本。
  25. goto End

  26. :WinXP
  27. echo.
  28. echo 当前系统为 Windows XP
  29. goto End

  30. :Win7
  31. echo.
  32. echo 当前系统为 Windows 7
  33. goto End

  34. :Win8
  35. echo.
  36. echo 当前系统为 Windows 8
  37. goto End

  38. :Win10
  39. echo.
  40. echo 当前系统为 Windows 10
  41. goto End

  42. :Win11
  43. echo.
  44. echo 当前系统为 Windows 11
  45. goto End

  46. :End
  47. echo.
  48. pause
  49. exit /b
复制代码


wn168cn@163.com 发表于 前天 09:15
感谢分享
maykun 发表于 前天 09:08
从代码里看是定义了XP-11之间的系统,如果没被定义到的,如95 ,me,98以及后续要新出的系统是否就不能识别了? 如果只是想知道当前系统,DOS里输入systeminfo就可以显示。要是再根据识别的系统再干点别的那就不会了。
szwp 发表于 前天 08:14
wangyibin 发表于 2024-11-12 18:52
为了提高可读性和代码结构,你可以考虑简化重复性的 if 条件判断,比如通过 for 循环遍历检测版本信息,减 ...

for /f "tokens=2,3,4 skip=2" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"') do echo 当前系统为%%b %%c

试试
ylac 发表于 前天 08:00
收藏,谢谢分享
AcidBurn 发表于 前天 04:19
谢谢楼主的分享!
望风的蜗牛 发表于 前天 04:07
感谢分享
yc2428 发表于 3 天前
感谢分享
http88 发表于 3 天前
我觉的windows11就是windows10稍微变动下。
2012飘水 发表于 3 天前
感谢分享,下载保存了
fzp070 发表于 3 天前
倒垃圾的歌者 发表于 2024-11-12 21:09
XP没有Powshell,所以无法判断

确实!感谢大佬分享批处理,适用Windows各版本。
断剑留痕 发表于 3 天前
学习了,多谢分享
倒垃圾的歌者 发表于 3 天前
fzp070 发表于 2024-11-12 20:57
Powshell判断当前系统版本

XP没有Powshell,所以无法判断

点评

确实!感谢大佬分享批处理,适用Windows各版本。  详情 回复 发表于 3 天前
fzp070 发表于 3 天前
本帖最后由 fzp070 于 2024-11-12 21:08 编辑

PowerShell判断当前系统版本
  1. write-host "【1】查询PowerShell版本" -ForegroundColor Yellow
  2. $PSVersionTable.PSVersion
  3. write-host "------------------------------------------------------" -ForegroundColor Green

  4. write-host "【2】查询操作系统版本" -ForegroundColor Yellow
  5. Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber
  6. write-host "------------------------------------------------------" -ForegroundColor Green

  7. write-host "【3】查询操作系统版本" -ForegroundColor Yellow
  8. Get-WmiObject Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber
  9. write-host "------------------------------------------------------" -ForegroundColor Green

  10. pause
复制代码


点评

XP没有Powshell,所以无法判断  详情 回复 发表于 3 天前
nttwqz 发表于 3 天前
  1. for /f "tokens=2 delims=[]" %%a in ('ver') do for /f "tokens=2-4 delims=. " %%b in ("%%a") do set "ver=%%b%%c"&set "verbuild=%%d"
复制代码
cxydeity 发表于 3 天前
感谢分享
1G空间100元 发表于 3 天前
本帖最后由 1G空间100元 于 2024-11-12 19:37 编辑
qitiandashe1020 发表于 2024-11-12 19:18
这个脚本,我的8.1系统判断正确

这个脚本判断是最正确的
会显示 系统版本+发行号大版本号+发行号小版本号
而且PE可用

wn168cn@163.com 发表于 3 天前
感谢分享
倒垃圾的歌者 发表于 3 天前

你要的话我可以给你改进一下 检测当前系统版本.zip (792 Bytes, 下载次数: 13)

点评

谢谢大佬  详情 回复 发表于 前天 09:57
倒垃圾的歌者 发表于 3 天前
本帖最后由 倒垃圾的歌者 于 2024-11-12 19:20 编辑

chatgpt不可全信,我举个例子,比如
  1. :: 检测并设置%SystemVersion%为"Windows 10"
  2. if /i "%SystemVersion:Windows 10=%" neq "%SystemVersion%" (
  3.     set SystemVersion=10
  4. )
复制代码
我这段的意思是如果输出结果中只要包含“10”这个字符串的,就设定系统版本为10,我这明显是Windows10系统,然后你那整段代码少了这个,它告诉我我的系统是XP

点评

根据已知问题进行了修改  详情 回复 发表于 前天 09:29
qitiandashe1020 发表于 3 天前
倒垃圾的歌者 发表于 2024-11-12 18:56
Windows8.1其实就是Windows8系统,8.1不是一个系统大版本

原来如此

点评

你要的话我可以给你改进一下  详情 回复 发表于 3 天前
qitiandashe1020 发表于 3 天前
1G空间100元 发表于 2024-11-12 18:56
楼主的脚本不错
另一个论坛上看到的:

这个脚本,我的8.1系统判断正确

点评

这个脚本判断是做正确的 会显示 系统版本+大版本号+小版本号  详情 回复 发表于 3 天前
wangyibin 发表于 3 天前

GPT-4o 模型 协助

点评

chatgpt不可全信,我举个例子,比如 我这段的意思是如果输出结果中只要包含“10”这个字符串的,就设定系统版本为10,我这明显是Windows10系统,然后它告诉我我的系统是XP  详情 回复 发表于 3 天前
倒垃圾的歌者 发表于 3 天前
hmaaaa 发表于 2024-11-12 19:07
THX~!感恩分享摟,謝謝大大喔~~!辛苦了!^^

你先测试一下有没有用吧
hmaaaa 发表于 3 天前
THX~!感恩分享摟,謝謝大大喔~~!辛苦了!^^

点评

你先测试一下有没有用吧  详情 回复 发表于 3 天前

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-15 12:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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