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

[文本处理] 请教:如何判断wim映像的版本

[复制链接]
发表于 昨天 07:56 | 显示全部楼层 |阅读模式
请教各位老师:
    批处理如何判断 WinPE 的映像文件,如 boot.wim 的版本,只判断是 Win10 或 Win11 即可,
    不需要判断 Win10 之前版本。
 楼主| 发表于 昨天 11:58 | 显示全部楼层
各位老师,来过路过,不要错过 ...
发表于 昨天 12:34 | 显示全部楼层
一般而言,版本号范围:
   10.0.1xxxx 是 Win10
   大于或等于 10.0.22xxx 是 Win11
发表于 昨天 14:25 | 显示全部楼层
dism查找列出映像的文件, 然后看sidebyside中组件的版本, 一般组件版本号就是系统版本, 大概就像这样子
\Windows\WinSxS\x86_microsoft-windows-packagemanager_31bf3856ad364e35_10.0.17763.1_none_817f127d9310406d
  1. dism /list-image /imagefile:boot.wim /index:1|findstr /i \windows\winsxs
  2. pause
复制代码

或者7z之类的直接从wim中提取特定文件, 然后获取提其的文件的版本号, 比如
  1. 7z e boot.wim -o%temp% 1\Windows\System32\kernel32.dll
  2. 7z t "%temp%\kernel32.dll"
  3. pause
复制代码

 楼主| 发表于 昨天 15:16 | 显示全部楼层
Five66 发表于 2026-7-30 14:25
dism查找列出映像的文件, 然后看sidebyside中组件的版本, 一般组件版本号就是系统版本, 大概就像这样子
\Wi ...

谢谢老师,我是小白不会弄啊
发表于 昨天 19:16 | 显示全部楼层
  1. @echo off
  2. for /f "skip=1 tokens=2 delims=: " %%A in ('dism /Get-ImageInfo /ImageFile:"E:\sources\boot.wim" /index:1^|findstr "Version"') do set "version=%%A"
  3. echo version=%version%
  4. if "%version%" geq "10.0.22000" (
  5.   echo win11
  6. ) else (
  7.   echo win10
  8. )
  9. pause
复制代码
 楼主| 发表于 昨天 20:02 | 显示全部楼层

谢谢老师,好像不对,判断Win10的映像显示是Win10, 判断的映像是Win11PE的,但运行结果也显示是Win10
发表于 昨天 20:13 | 显示全部楼层
766266yyn 发表于 2026-7-30 20:02
谢谢老师,好像不对,判断Win10的映像显示是Win10, 判断的映像是Win11PE的,但运行结果也显示是Win10 ...

我不知道如何判断版本号;AI说版本号小于等于19045是win10,反之是win11;
最好测试install.wim
发表于 1 小时前 | 显示全部楼层
AI:
Windows 10 和 Windows 11 的主版本号都是 10.0,需要判断内部版本号 Build:

Build < 22000:Windows 10 WinPE
Build >= 22000:Windows 11 WinPE

CheckWinPE.bat
  1. @echo off
  2. setlocal EnableExtensions

  3. rem 用法:CheckWinPE.bat "D:\sources\boot.wim"
  4. set "WimFile=%~1"

  5. if not defined WimFile set "WimFile=%~dp0boot.wim"

  6. if not exist "%WimFile%" (
  7.     echo [错误] 找不到映像文件:
  8.     echo %WimFile%
  9.     exit /b 1
  10. )

  11. set "Build="

  12. for /f "tokens=2 delims=:" %%A in ('
  13.     dism.exe /English /Get-WimInfo /WimFile:"%WimFile%" /Index:1 2^>nul ^| findstr /b /c:"Version :"
  14. ') do (
  15.     for /f "tokens=3 delims=." %%B in ("%%A") do set "Build=%%B"
  16. )

  17. if not defined Build (
  18.     echo [错误] 无法读取 WIM 映像版本。
  19.     exit /b 1
  20. )

  21. echo 检测到 Build:%Build%

  22. if %Build% GEQ 22000 (
  23.     echo 判断结果:Windows 11 WinPE
  24.     exit /b 11
  25. ) else (
  26.     echo 判断结果:Windows 10 WinPE
  27.     exit /b 10
  28. )
复制代码


调用:
  1. call CheckWinPE.bat "D:\sources\boot.wim"

  2. if errorlevel 11 (
  3.     echo 这是 Windows 11 PE
  4. ) else if errorlevel 10 (
  5.     echo 这是 Windows 10 PE
  6. ) else (
  7.     echo 检测失败
  8. )
复制代码


其中 /English 很重要,可以避免中文、英文系统的 DISM 输出字段不同。通常 boot.wim 的索引 1 和索引 2 使用相同系统版本,所以读取 /Index:1 即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-31 05:04

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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