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

[系统相关] 【已解决】请问批处理如何在PE下判断C盘系统并运行一段同文件下的代码

本帖最后由 gd123 于 2017-11-6 12:24 编辑

批处理如何在PE里面判断C盘是XP、win7、win8.1、win10系统(不是判断PE用的是什么系统)
判断到对应的系统后分别运行同文件里面的一段代码
谢谢!~

  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\cmd.exe wmic datafile where "name='%%i:\\windows\\system32\\cmd.exe'" get version>>a.tmp&&if exist %%i:\windows\SysWOW64\ (
  4. echo %%i盘是64位
  5.   ) else (
  6. echo %%i盘是32位
  7. )
  8. )>>系统.txt
  9. for /f "skip=1 delims= " %%a in ('type,a.tmp') do set num=%%a
  10. set var=%num:~0,3%
  11. (if %var%==5.1 echo xp
  12. if %var%==6.1 echo win7sp1
  13. if %var%==5.2 echo win2003
  14. if %var%==6.0 echo win2008
  15. if %var%==6.2 echo win8
  16. if %var%==6.3 echo win8.1
  17. if %var%==10. echo win10)>>系统.txt
  18. del *.tmp
  19. start "" 系统.txt
复制代码
1

评分人数

    • gd123: 非常感觉技术 + 1

TOP

通过cmd.exe的按本来判断
  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\cmd.exe wmic datafile where "name='%%i:\\windows\\system32\\cmd.exe'" get version>>a.tmp&&if exist %%i:\windows\SysWOW64\ (
  4. echo %%i盘是64位>>pan.tmp
  5.   ) else (
  6. echo %%i盘是32位>>pan.tmp
  7. )
  8. )
  9. setlocal enabledelayedexpansion
  10. (for /f "delims=" %%a in ('type a.tmp') do (
  11. set "line=%%a"
  12. set "line=!line: =!"
  13. echo !line!
  14. ))>b.tmp
  15. findstr /v "Version" "b.tmp">>c.tmp
  16. setlocal enabledelayedexpansion
  17. for /f "delims=" %%a in (c.tmp) do (
  18. set num=%%a
  19. set var=!num:~0,3!
  20. echo.!var! >>ver.tmp
  21. )
  22. for /f %%m in (ver.tmp) do (
  23. if %%m==5.1 echo xp>>sys.tmp
  24. if %%m==6.1 echo win7sp1>>sys.tmp
  25. if %%m==5.2 echo win2003>>sys.tmp
  26. if %%m==6.0 echo win2008>>sys.tmp
  27. if %%m==6.2 echo win8>>sys.tmp
  28. if %%m==6.3 echo win8.1>>sys.tmp
  29. if %%m==10. echo win10>>sys.tmp
  30. )
  31. set n=0
  32. for /f "tokens=*" %%a in (pan.tmp) do (set /a n+=1
  33. set a!n!=%%a
  34. set x=!n!)
  35. set n=0
  36. for /f "tokens=*" %%b in (sys.tmp) do (set /a n+=1
  37. set b!n!=%%b)
  38. for /l %%c in (1,1,%x%) do (if defined b%%c echo !a%%c!!b%%c!>>系统.txt)
  39. del *.tmp
复制代码
通过挂载注册表来读取
  1. @echo off
  2. set "v1=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
  3. set "v2=HKLM\My_Hive\Microsoft\Windows NT\CurrentVersion"
  4. set "Hive=windows\system32\config\software"
  5. 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 (
  6.     if /i "%%i:"=="%SystemDrive%" (
  7.         for /f "tokens=1,2*" %%a in ('reg query "%v1%"') do (
  8.             if /i "%%a"=="ProductName" (
  9. if exist "%%i:\windows\SysWOW64" (
  10.                 echo,分区:%%i
  11.                 echo,系统:%%c x64&echo,
  12. ) else (
  13. echo,分区:%%i
  14.                 echo,系统:%%c x86&echo,
  15. )
  16.             )
  17.         )
  18.     ) else if exist "%%i:\%Hive%" (
  19.         reg load "HKLM\My_Hive" "%%i:\%Hive%" >nul
  20.         for /f "tokens=1,2*" %%a in ('reg query "%v2%"') do (
  21.             if /i "%%a"=="ProductName" (
  22. if exist "%%i:\windows\SysWOW64" (
  23.                 echo,分区:%%i
  24.                 echo,系统:%%c x64&echo,
  25. ) else (
  26. echo,分区:%%i
  27.                 echo,系统:%%c x86&echo,
  28. )
  29.             )
  30.         )
  31.         reg unload "HKLM\My_Hive" >nul
  32.     )
  33. )
  34. pause
复制代码
2

评分人数

TOP

回复 4# 见与不见

麻烦通过一下?

TOP

回复 3# gd123


    QQ联系我吧  我研究下

TOP

回复 2# 见与不见

能不能具体写一下?

TOP

本帖最后由 见与不见 于 2017-10-24 09:39 编辑

参考,系统引导修复的工具,批处理做的,

自动修复系统引导_NTBootAutofix 2.57  戳这里

TOP

返回列表