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

[注册表类] [已解决]]批处理如何实现对比更新两个注册表中指定项?

注册表1.reg
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\GameXX]
  3. "Path"="C:\\gamexx.exe"
  4. "Version"="2.0a"
复制代码

注册表2.reg
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\GameXX]
  3. "Path"="D:\\gamexx.exe"
  4. "Version"="1.0c"
复制代码


批处理如何实现对比1.reg和2.reg,然后更新保存2.reg中的"Version"="1.0c"去"Version"="2.0a"

[ 本帖最后由 maxgear 于 2011-2-10 12:59 编辑 ]
1

评分人数

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

如果单纯这样比较文件看不出意义,为什么不直接覆盖呢?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 hanyeguxing 于 2011-2-10 07:39 发表
如果单纯这样比较文件看不出意义,为什么不直接覆盖呢?


因为电脑A和电脑B的安装路径不同,我从电脑A提取1.reg,然后在电脑B同步1.reg的版本(直接覆盖连安装路径都改了)

TOP

要求:只有一行行首为"Version"
注意:输出转为 ANSI 编码,不保留空行
  1. @echo off
  2. for /f "tokens=1* delims==" %%a in ('type 1.reg') do if /i "%%a"==""Version"" set "s=%%b"
  3. (for /f "tokens=1* delims==" %%a in ('type 2.reg') do if "%%b"=="" (echo;%%a) else (
  4.         if /i "%%a"==""Version"" (echo;%%a=%s%) else echo;%%a=%%b
  5. ))>temp.h
  6. move temp.h 2.reg
复制代码

[ 本帖最后由 hanyeguxing 于 2011-2-10 11:48 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 4楼 的帖子

测试了,输出结果完全正确!
感恩~

努力学习中...

TOP

返回列表