[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 通过获取version.dll文件版本号判断硬盘里系统版本

本帖最后由 pcl_test 于 2017-8-18 09:08 编辑

通过获取version文件版本号,和是否有64位系统文件夹,以判断硬盘中所有的系统版本和位数。

  1. wmic datafile where "name='%windir:\=\\%\\System32\\version.dll'" get version /value
  2. if exist "64位系统文件夹" (echo;64) else echo;32
复制代码

TOP

test.bat
  1. @echo off
  2. powershell -c "(Get-ChildItem 'C:\Windows\System32\version.dll' | Select-Object -ExpandProperty VersionInfo).ProductVersion"
复制代码
环境所限,需要使用 PowerShell 2.0 版本。

TOP

test2.bat
  1. @echo off
  2. powershell -c "(Get-WmiObject -class Win32_OperatingSystem).Caption"
复制代码
环境所限,需要使用 PowerShell 2.0 版本。

TOP

  1. @echo off
  2. for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  3. if exist %%i:\windows\system32\version.dll echo %%i&wmic datafile where "name='%%i:\\windows\\system32\\version.dll'" get version
  4. )
  5. pause
  6. if (buf == "5.0.") then
  7.         sysver = "Windows 2000"
  8. elseif (buf == "5.1.") then
  9.         sysver = "Windows XP"
  10. elseif (buf == "5.2.") then
  11.         sysver = "Windows Server 2003"
  12. elseif (buf == "6.0.") then
  13.         sysver = "Windows Server 2008"
  14. elseif (buf == "6.1.") then
  15.         sysver = "Windows 7"
  16. elseif (buf == "6.2.") then
  17.         sysver = "Windows 8"
  18. elseif (buf == "6.3.") then
  19.         sysver = "Windows 8.1"
  20. elseif (buf == "10.0") then
  21.         sysver = "Windows 10"
复制代码

TOP

回复 5# 窄口牛


不准确。有重复:
5.2       Windows Server 2003
5.2       Windows XP x64
6.0       Windows Vista
6.0       Windows Server 2008
6.1       Windows 7
6.1       Windows Server 2008 R2
6.2       Windows 8
6.2       Windows Server 2012
环境所限,需要使用 PowerShell 2.0 版本。

TOP

只能这样了,挂载注册表才能细分,思路就这样,只是我不会鼓捣变量,写不完整。

TOP

回复 7# 窄口牛


    如果只是判断目标系统的位数,直接看有没有program file (x86)目录不就得了?或者还有一个目录也可以看出来。
windows\syswow64

个人比较偏向用特定文件来判断目标系统。

相信你是在PE里使用的。

TOP

返回列表