Board logo

标题: [注册表类] [已解決]批处理怎样自动辨别系统?将系统32&64注册表代码根据系统导入注册表? [打印本页]

作者: 1139054012    时间: 2015-7-5 20:10     标题: [已解決]批处理怎样自动辨别系统?将系统32&64注册表代码根据系统导入注册表?

本帖最后由 1139054012 于 2015-7-6 13:38 编辑

当前有
Win7x32位.reg
Win7x64位.reg
Win8x32位.reg
Win8x64位.reg
共【4个】注册表文件。


而我想实现的流程是:
1.将不同系统得注册表代码复制放到bat里,
2.通过批处理辨别系统,将辨别对应系统,将批处理下编号注册表代码生成隐藏reg导入。
3.之后导入成功后再删除隐藏reg就完成了。

请大神帮助下实现当前需要功能吗?
作者: pcl_test    时间: 2015-7-5 21:45

本帖最后由 pcl_test 于 2015-7-5 22:17 编辑
  1. @echo off
  2. ver|find "6.1." >nul&&(set "v=Win7"&goto end)
  3. ver|find "6.2." >nul&&(set "v=Win8"&goto end)
  4. exit
  5. :end
  6. if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "X86" (regedit /s "%v%x32位.reg") else (regedit /s "%v%x64位.reg")
  7. del *.reg
  8. pause
复制代码

作者: 1139054012    时间: 2015-7-5 21:51

本帖最后由 1139054012 于 2015-7-5 21:53 编辑

回复 2# pcl_test


    谢谢,请问没办法将注册表代码集合到1个批处理运行吗?
在辨别系统代码后,添加goto语句代码,实现输出-导入-删除吗?
作者: pcl_test    时间: 2015-7-5 21:56

回复 3# 1139054012

然而并不知道你的reg内容,把你的四个reg文件打包发上来
作者: 1139054012    时间: 2015-7-5 22:21

回复 4# pcl_test
作者: 1139054012    时间: 2015-7-5 22:22

回复 5# 1139054012
当前就这四个
作者: pcl_test    时间: 2015-7-5 22:29

回复 6# 1139054012

四个合并起来太长了,还是用压缩软件把reg文件连同批处理文件打包成自解压包运行吧
作者: /zhqsystem/zhq    时间: 2015-7-5 23:09

本帖最后由 /zhqsystem/zhq 于 2015-7-5 23:11 编辑

以下3种方法任选其一,还有别的方法不一一列出了这3种是常用的自行替换版本号,7以上版本号为6.1-6.2-6.3

ver|find "6.1">nul&&if exist "%systemroot%\syswow64" 此处执行win7x64命令
ver|find "6.1">nul&&if not exist "%systemroot%\syswow64" 此处执行win7x32命令

ver|find "6.1">nul&&dir/ad/s/b "%systemroot%\syswow64">nul&&此处执行win7x64命令
ver|find "6.1">nul&&(dir/ad/s/b "%systemroot%\syswow64">nul||此处执行win7x32命令)

ver|find "6.1">nul&&reg query "hklm\SOFTWARE\Wow6432Node">nul&&此处执行win7x64命令
ver|find "6.1">nul&&(reg query "hklm\SOFTWARE\Wow6432Node">nul||此处执行win7x32命令)
作者: wikou    时间: 2015-7-6 09:04

如何保存运行的啊?
作者: DAIC    时间: 2015-7-6 10:47

  1. @echo off
  2. ver|find "6.1">nul&&if exist "%systemroot%\syswow64" (
  3.     regedit /s "Win7x64位.reg"
  4. ) else (
  5.     regedit /s "Win7x32位.reg"
  6. )
  7. ver|find "6.2">nul&&if exist "%systemroot%\syswow64" (
  8.     regedit /s "Win8x64位.reg"
  9. ) else (
  10.     regedit /s "Win8x32位.reg"
  11. )
  12. pause
复制代码

作者: 1139054012    时间: 2015-7-6 11:47

回复 8# /zhqsystem/zhq


    另外有辨别XP、VISTA,Win10 32和64的命令吗?
XP只要改5.1就行了,但VISTA,Win10呢?
作者: pcl_test    时间: 2015-7-6 11:56

回复 11# 1139054012
  1. Windows 10预览版 前期6.4 近期10.0
  2. Windows 8.1 6.3
  3. Windows 8 6.2
  4. Windows 7 6.1
  5. Windows Vista 6.0
  6. Windows XP 5.1
复制代码

作者: 1139054012    时间: 2015-7-6 12:35

本帖最后由 1139054012 于 2015-7-6 13:00 编辑

回复 11# pcl_test
回复 12# pcl_test

    感谢2位代码。本意是打算把注册表集合在批处理里,因为注册表得路径都是不同的,我需要用批处理定义%renchongyi%所在目录路径,通过生成renchongyi.reg来导入,之后删除。
这是三步骤中的达成目标。

不知是否能配合goto :eof 实现?

两位不必直接把注册表代码写下来。只要告诉我代码步骤,

我会把所有路径都以%renchongyi%代替
  1. @echo off
  2. SET renchongyi=%CD%
  3. SET renchongyi=%renchongyi:\=\\%
  4. echo 请输入你要选择执行的动作,输入n则退出程序...
  5. set /p n=输入你的选择内容:1:win7x32 、2:win7x64 、3:win8x32 、4 Win8x64
  6. if "%n%"=="" cls&goto :caozuo
  7. if "%n%"=="1" call :win7x32
  8. if "%n%"=="2" call :win7x64
  9. if "%n%"=="3" call :win8x32
  10. if "%n%"=="4" call :Win8x64
  11. .......
  12. if /i "%n%"=="n" exit
  13. goto :eof
  14. :win7x32
  15. >>"win7x32.reg" ECHO Windows Registry Editor Version 5.00
  16. .......
  17. goto :eof
  18. :win7x64
  19. >>":win7x64.reg" ECHO Windows Registry Editor Version 5.00
  20. .......
  21. goto :eof
复制代码
1.注册表项添加到批处理每行前需要添加什么?    /*这样也许看起来麻烦,但只要另外写一个bat,其实也很简单*/
2.怎样使用ver命令和goto :eof 实现自动选择对应系统并生成隐藏renchongyi.reg无提示窗口导入?
流程是:
在一个整合reg注册表项在bat里,通过【辨别系统】——【选择bat内对应系统注册表项】——【获取所在目录路径】——【生成reg】——【无提示导入】——【关闭注册表并删除renchongyi.reg】完成。
作者: DAIC    时间: 2015-7-6 13:19

回复 13# 1139054012
  1. @echo off
  2. SET renchongyi=%CD%
  3. ver|find "6.1">nul&&if exist "%systemroot%\syswow64" (
  4.     call :win7x32
  5. ) else (
  6.     call :win7x64
  7. )
  8. ver|find "6.2">nul&&if exist "%systemroot%\syswow64" (
  9.     call :win8x32
  10. ) else (
  11.     call :Win8x64
  12. )
  13. goto :eof
  14. :win7x32
  15. >>"%renchongyi%\win7x32.reg" ECHO Windows Registry Editor Version 5.00
  16. .......
  17. regedit /s "%renchongyi%\win7x32.reg"
  18. del /f /q "%renchongyi%\win7x32.reg"
  19. goto :eof
  20. :win7x64
  21. >>"%renchongyi%\win7x64.reg" ECHO Windows Registry Editor Version 5.00
  22. .......
  23. regedit /s "%renchongyi%\win7x64.reg"
  24. del /f /q "%renchongyi%\win7x64.reg"
  25. goto :eof
  26. :win8x32
  27. >>"%renchongyi%\win8x32.reg" ECHO Windows Registry Editor Version 5.00
  28. .......
  29. regedit /s "%renchongyi%\win8x32.reg"
  30. del /f /q "%renchongyi%\win8x32.reg"
  31. goto :eof
  32. :win8x64
  33. >>"%renchongyi%\win8x64.reg" ECHO Windows Registry Editor Version 5.00
  34. .......
  35. regedit /s "%renchongyi%\win8x64.reg"
  36. del /f /q "%renchongyi%\win8x64.reg"
  37. goto :eof
复制代码

作者: pcl_test    时间: 2015-7-6 13:25

不晓得你“获取所在目录路径”何用,请说清楚
  1. @echo off
  2. ::判断系统
  3. ver|find "6.1." >nul&&set "v=win7"
  4. ver|find "6.2." >nul&&set "v=win8"
  5. ::判断32位or64位
  6. if exist "%systemroot%\syswow64" (set "w=x64") else (set "w=x32")
  7. ::进行相应操作
  8. goto %v%%w% 2>nul||echo 未定义的系统&ping -n 2 0 >nul&exit
  9. :win7x32
  10. >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
  11. .......
  12. goto end
  13. :win7x64
  14. >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
  15. .......
  16. goto end
  17. :win8x32
  18. >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
  19. .......
  20. goto end
  21. :win8x64
  22. >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
  23. .......
  24. goto end
  25. :end
  26. ::导入
  27. regedit /s "%v%%w%.reg"
  28. ::删除
  29. del "%v%%w%.reg"
  30. ::退出
  31. ping -n 2 0 >nul&exit
复制代码

作者: /zhqsystem/zhq    时间: 2015-7-6 23:38

本帖最后由 /zhqsystem/zhq 于 2015-7-6 23:42 编辑

回复 11# 1139054012

虽然问题已解决,还要继续回复
    对于win10的判断另有讲究正式版没有出,去除所有.判断大于63默认为win10,win10的版本号不会低于6.3(只能暂时这么用),也可以判断6.1,6.2,6.3都不是则默认为win10

代码是这样的
ver|find "5. 6.1. 6.2. 6.3."||(这里)
(只能暂时用不可常用如果有更高的系统版本会失败),其中的5.最好加入老版本号来区分最新版本号
(由于没有10只能做个参考,自行测试)
作者: xiongjm2007@126    时间: 2015-7-8 21:41

mark....ffff




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2