标题: [注册表类] [已解決]批处理怎样自动辨别系统?将系统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 编辑
- @echo off
- ver|find "6.1." >nul&&(set "v=Win7"&goto end)
- ver|find "6.2." >nul&&(set "v=Win8"&goto end)
- exit
- :end
- if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "X86" (regedit /s "%v%x32位.reg") else (regedit /s "%v%x64位.reg")
- del *.reg
- 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&® 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
- @echo off
- ver|find "6.1">nul&&if exist "%systemroot%\syswow64" (
- regedit /s "Win7x64位.reg"
- ) else (
- regedit /s "Win7x32位.reg"
- )
-
- ver|find "6.2">nul&&if exist "%systemroot%\syswow64" (
- regedit /s "Win8x64位.reg"
- ) else (
- regedit /s "Win8x32位.reg"
- )
- 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 - Windows 10预览版 前期6.4 近期10.0
- Windows 8.1 6.3
- Windows 8 6.2
- Windows 7 6.1
- Windows Vista 6.0
- 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%代替- @echo off
- SET renchongyi=%CD%
- SET renchongyi=%renchongyi:\=\\%
-
- echo 请输入你要选择执行的动作,输入n则退出程序...
- set /p n=输入你的选择内容:1:win7x32 、2:win7x64 、3:win8x32 、4 Win8x64
- if "%n%"=="" cls&goto :caozuo
- if "%n%"=="1" call :win7x32
- if "%n%"=="2" call :win7x64
- if "%n%"=="3" call :win8x32
- if "%n%"=="4" call :Win8x64
- .......
- if /i "%n%"=="n" exit
-
- goto :eof
- :win7x32
- >>"win7x32.reg" ECHO Windows Registry Editor Version 5.00
- .......
- goto :eof
-
- :win7x64
- >>":win7x64.reg" ECHO Windows Registry Editor Version 5.00
- .......
- goto :eof
复制代码
1.注册表项添加到批处理每行前需要添加什么? /*这样也许看起来麻烦,但只要另外写一个bat,其实也很简单*/
2.怎样使用ver命令和goto :eof 实现自动选择对应系统并生成隐藏renchongyi.reg无提示窗口导入?
流程是:
在一个整合reg注册表项在bat里,通过【辨别系统】——【选择bat内对应系统注册表项】——【获取所在目录路径】——【生成reg】——【无提示导入】——【关闭注册表并删除renchongyi.reg】完成。
作者: DAIC 时间: 2015-7-6 13:19
回复 13# 1139054012 - @echo off
- SET renchongyi=%CD%
-
- ver|find "6.1">nul&&if exist "%systemroot%\syswow64" (
- call :win7x32
- ) else (
- call :win7x64
- )
-
- ver|find "6.2">nul&&if exist "%systemroot%\syswow64" (
- call :win8x32
- ) else (
- call :Win8x64
- )
-
- goto :eof
-
- :win7x32
- >>"%renchongyi%\win7x32.reg" ECHO Windows Registry Editor Version 5.00
- .......
- regedit /s "%renchongyi%\win7x32.reg"
- del /f /q "%renchongyi%\win7x32.reg"
- goto :eof
-
- :win7x64
- >>"%renchongyi%\win7x64.reg" ECHO Windows Registry Editor Version 5.00
- .......
- regedit /s "%renchongyi%\win7x64.reg"
- del /f /q "%renchongyi%\win7x64.reg"
- goto :eof
-
- :win8x32
- >>"%renchongyi%\win8x32.reg" ECHO Windows Registry Editor Version 5.00
- .......
- regedit /s "%renchongyi%\win8x32.reg"
- del /f /q "%renchongyi%\win8x32.reg"
- goto :eof
-
- :win8x64
- >>"%renchongyi%\win8x64.reg" ECHO Windows Registry Editor Version 5.00
- .......
- regedit /s "%renchongyi%\win8x64.reg"
- del /f /q "%renchongyi%\win8x64.reg"
- goto :eof
复制代码
作者: pcl_test 时间: 2015-7-6 13:25
不晓得你“获取所在目录路径”何用,请说清楚- @echo off
- ::判断系统
- ver|find "6.1." >nul&&set "v=win7"
- ver|find "6.2." >nul&&set "v=win8"
- ::判断32位or64位
- if exist "%systemroot%\syswow64" (set "w=x64") else (set "w=x32")
- ::进行相应操作
- goto %v%%w% 2>nul||echo 未定义的系统&ping -n 2 0 >nul&exit
-
- :win7x32
- >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
- .......
- goto end
- :win7x64
- >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
- .......
- goto end
- :win8x32
- >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
- .......
- goto end
- :win8x64
- >>"%v%%w%.reg" echo;Windows Registry Editor Version 5.00
- .......
- goto end
-
- :end
- ::导入
- regedit /s "%v%%w%.reg"
- ::删除
- del "%v%%w%.reg"
- ::退出
- 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 |