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

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

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

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


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

请大神帮助下实现当前需要功能吗?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

mark....ffff

TOP

本帖最后由 /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只能做个参考,自行测试)

TOP

不晓得你“获取所在目录路径”何用,请说清楚
  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
复制代码
1

评分人数

TOP

回复 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
复制代码
1

评分人数

TOP

本帖最后由 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】完成。

TOP

回复 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
复制代码

TOP

回复 8# /zhqsystem/zhq


    另外有辨别XP、VISTA,Win10 32和64的命令吗?
XP只要改5.1就行了,但VISTA,Win10呢?

TOP

  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
复制代码

TOP

如何保存运行的啊?

TOP

本帖最后由 /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命令)

TOP

回复 6# 1139054012

四个合并起来太长了,还是用压缩软件把reg文件连同批处理文件打包成自解压包运行吧

TOP

回复 5# 1139054012
当前就这四个

TOP

回复 4# pcl_test

TOP

回复 3# 1139054012

然而并不知道你的reg内容,把你的四个reg文件打包发上来

TOP

返回列表