无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3842|回复: 8
打印 上一主题 下一主题

[已解决] 请教一个修改注册表问题(感谢 pznpt !)

[复制链接]
跳转到指定楼层
1#
发表于 2013-4-17 11:23:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2011xiaobing 于 2013-4-17 23:21 编辑

问题:求一批处理,把注册表HKLM\MYREG 下所有 字符 C:\  替换成 字符 X:\
谢谢!

2#
发表于 2013-4-17 18:27:14 | 只看该作者
  1. @echo off
  2. reg export "HKLM\MYREG" "%temp%\$$"
  3. reg delete "HKLM\MYREG" /f
  4. (for /f "delims=" %%a in ('find /n /v ""^<"%temp%\$$"') do (
  5.    set "str=%%a"
  6.    setlocal enabledelayedexpansion
  7.    set "str=!str:c:\=X:\!"
  8.    set "str=!str:*]=!"
  9.    echo,!str!
  10.    endlocal
  11. ))>"%temp%\$$.reg"
  12. reg import "%temp%\$$.reg"
  13. del "%temp%\$$.*"
  14. pause
复制代码
可以参考:http://www.bathome.net/viewthread.php?tid=20173&rpid=120828
Win7以上系统右键以管理员权限运行
回复

使用道具 举报

3#
 楼主| 发表于 2013-4-17 20:02:47 | 只看该作者
感谢尊敬的 pznpt 大师的指点!!!
反馈:
    在测试过程中,由于导出的注册表有几十M之巨,
现在批处理已运行40多分钟,还没结果,不知什么原因。
回复

使用道具 举报

4#
 楼主| 发表于 2013-4-17 20:12:12 | 只看该作者
目前只运行到这一步。

Snap1.jpg (139.79 KB, 下载次数: 56)

Snap1.jpg
回复

使用道具 举报

5#
 楼主| 发表于 2013-4-17 20:17:16 | 只看该作者
能不能只导出 只含有C:\ 的部分,这样的注册表只有2M。
回复

使用道具 举报

6#
 楼主| 发表于 2013-4-17 20:24:36 | 只看该作者
终于运行结束!



但原注册表已完全被破坏。
回复

使用道具 举报

7#
 楼主| 发表于 2013-4-17 20:35:05 | 只看该作者
本帖最后由 2011xiaobing 于 2013-4-17 20:36 编辑

看来用纯CMD替换大量的字符不理想。
能利用第三方字符替换软件解决这个问题吗?
(如:FR.EXE--------FIND_REPLACE)。
由于导出的注册表是unicode编码格式,
要是转换成utf-8格式,字符转换就是秒杀。

还请大师指点!!!
回复

使用道具 举报

8#
发表于 2013-4-17 21:27:13 | 只看该作者
本帖最后由 pznpt 于 2013-4-17 21:50 编辑

咋不早说有那么大呢?
1.需要第三方工具:http://www.bathome.net/thread-16975-1-1.html
  1. @echo off
  2. reg export "HKLM\MYREG" "%temp%\$$"
  3. reg delete "HKLM\MYREG" /f
  4. type "%temp%\$$"|sed "s/[Cc]:\\/X:\\/g" > "%temp%\$$.reg"
  5. reg import "%temp%\$$.reg"
  6. del "%temp%\$$.*"
  7. pause
复制代码
2.自己先导出注册表为back.reg,删除原注册表"HKLM\MYREG",运行下面的vbs,再手工将生成的abc.reg导入
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. text = fso.OpenTextFile("back.reg",1,True,-1).ReadAll

  3. With New RegExp
  4.     .Pattern = "c:\"
  5.     .Global = True
  6.     .IgnoreCase = True
  7.     text = .Replace(text,"X:")
  8. End With

  9. fso.OpenTextFile("abc.reg",2,True,-1).Write text
  10. MsgBox "OK"
复制代码
回复

使用道具 举报

9#
 楼主| 发表于 2013-4-17 23:20:02 | 只看该作者
呵呵,测试成功!
多谢大师!

结帖!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-28 06:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表