无忧启动论坛

标题: 如何用批处理判断c盘系统版本? [打印本页]

作者: 807979023    时间: 2018-10-25 11:33
标题: 如何用批处理判断c盘系统版本?
如何用批处理判断c盘系统版本?
比如在pe中,如何用批处理判断c盘系统是w10?w7?xp?

作者: tools241    时间: 2018-10-25 11:56
本帖最后由 tools241 于 2018-10-25 12:17 编辑

1. XPE/XP 不含 \Windows\System32\Boot\winload.exe

2. 检查 \Windows\WinSxs -- Win7 含 *.7600.*, Win8 含 *.9200.*, Win8.1 含 *.9600.* ;
    上列 都不含便是Win10

请参考:
    精简DLL档(适用于10PE,8.1PE,8PE).BAT -- 批处理 ==>
  http://bbs.wuyou.net/forum.php?mod=viewthread&tid=408425


作者: nttwqz    时间: 2018-10-25 11:57
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=397824
作者: 807979023    时间: 2018-10-25 13:55
谢谢楼上两位指导,已解决。

  1. @echo off
  2. color 1f
  3. echo.
  4. echo.
  5. echo c盘系统版本:
  6. echo.
  7. set vc=0
  8. if not exist "c:\boot\bcd" echo winxp && set vc=1
  9. if exist "c:\Windows\WinSxs\*.7600.*" echo win7 && set vc=1
  10. if exist "c:\Windows\WinSxs\*.9200.*" echo win8 && set vc=1
  11. if exist "c:\Windows\WinSxs\*.9600.*" echo win8.1 && set vc=1
  12. if "%vc%" == "0" echo win10
  13. pause >nul
复制代码

--------------------------------------------------------
请问nttwqz大师,只查看多系统版本,能不能修改一下在正常系统中也可运行?
  1. @echo off
  2. color 1f

  3. :: 完成日期:2017-9-15
  4. if /i not "%systemdrive%"=="X:" if not exist X:\Windows\System32\config\system color 1f & echo 仅支持 WinPE 环境运行... & echo; & pause & exit

  5. rem 查找所有系统盘盘符、系统名称、类型、版本号
  6. setlocal enabledelayedexpansion
  7. for /d %%a in (C D E F G H I J K L M N O P Q R S T U V W Y Z) do if exist %%a:\Windows\System32\config\system set /a n+=1 && set "sysdrive-!n!=%%a:"
  8. cls
  9. echo.
  10. echo 系统列表
  11. echo;─┬──┬─┬──┬─────────────────────────────
  12. for /l %%b in (1,1,!n!) do (
  13.         if /i not "%systemdrive%"=="!sysdrive-%%b!" (
  14.                 set reg_load_system_%%b=HKLM\temp_system_%%b
  15.                 set reg_load_software_%%b=HKLM\temp_software_%%b
  16.                 rem 加载注册表 SYSTEM 到HKLM\temp_system_%%b,SOFTWARE到HKLM\temp_software_%%b
  17.                 reg load "!reg_load_system_%%b!" !sysdrive-%%b!\Windows\System32\config\SYSTEM >nul 2>&1
  18.                 reg load "!reg_load_software_%%b!" !sysdrive-%%b!\Windows\System32\config\SOFTWARE >nul 2>&1
  19.                 rem 查询系统类型
  20.                 if exist !sysdrive-%%b!\Windows\SysWOW64 (set osarch-%%b=x64) else if not exist !sysdrive-%%b!\Windows\SysWOW64 (set osarch-%%b=x86) else set "osarch-%%b=???"
  21.         )
  22.         rem 查询系统版本号,
  23.         for /f "tokens=3" %%c in ('reg query "!reg_load_system_%%b!\Setup\Service Reporting API\Components\CoreOS" /v Version 2^>nul ^| findstr /i "REG_SZ"') do set ver-%%b=%%c
  24.         rem 如果上面未查询到版本号,则在此处查询
  25.         if not defined ver-%%b (
  26.                 for /f "tokens=3" %%f in ('reg query "!reg_load_software_%%b!\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion 2^>nul ^| findstr /i "REG_SZ"') do set ver-%%b=%%f
  27.                 for /f "tokens=3" %%g in ('reg query "!reg_load_software_%%b!\Microsoft\Windows NT\CurrentVersion" /v CurrentBuildNumber 2^>nul ^| findstr /i "REG_SZ"') do set ver-%%b=!ver-%%b!.%%g
  28.         )
  29.         rem 查询系统名称
  30.         for /f "tokens=3*" %%d in ('reg query "!reg_load_software_%%b!\Microsoft\Windows NT\CurrentVersion" /v ProductName 2^>nul ^| findstr /i "REG_SZ"') do set name-%%b=%%d %%e
  31.         rem 卸载加载的注册表
  32.         reg unload "!reg_load_system_%%b!" >nul 2>&1
  33.         reg unload "!reg_load_software_%%b!" >nul 2>&1
  34.         echo; %%b│盘符│!sysdrive-%%b!│系统│!name-%%b! !osarch-%%b!        ^(!ver-%%b!^)
  35.         if %%b==!n! (echo;─┴──┴─┴──┴─────────────────────────────) else (
  36.                 echo;─┼──┼─┼──┼─────────────────────────────
  37.         )
  38. )
  39. pause >nul
复制代码





欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3