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

[文本处理] 注册表REG文件中字符串的替换

有一个注册表文件,文件名为test.reg,内容如下:

我的问题是如何利用批处理语句来实现替换"[HKEY_LOCAL_MACHINE\sam\sam\domains\account\users\000001F4]"这一行的最后的数字"4"为"5"。 我只知道用for循环能实现,也懂得一些用法,另外,把""V"=hex:00,00,00,00,bc,00,00,00,02,00,01,00,bc,00,00,00,1a,00,00,00,00,00,00,\"这一行及此行下的所有行都删除掉。

希望前辈在给出代码的同时能够指点下具体的实现方法,授人与不如授人渔嘛,感激不尽!


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\sam\sam\domains\account\users\000001F4]
"F"=hex:02,00,01,00,00,00,00,00,52,5d,73,72,44,1a,c9,01,00,00,00,00,00,00,00,\
  00,ac,1a,cd,a9,8b,b7,c8,01,00,00,00,00,00,00,00,00,c4,cf,c0,5e,44,1a,c9,01,\
  f4,01,00,00,01,02,00,00,14,02,00,00,00,00,00,00,00,00,8a,00,01,00,00,00,00,\
  00,00,00,00,00,00,00
"V"=hex:00,00,00,00,bc,00,00,00,02,00,01,00,bc,00,00,00,1a,00,00,00,00,00,00,\
  00,d8,00,00,00,00,00,00,00,00,00,00,00,d8,00,00,00,0a,00,00,00,00,00,00,00,\
  e4,00,00,00,00,00,00,00,00,00,00,00,e4,00,00,00,00,00,00,00,00,00,00,00,e4,\
  00,00,00,06,00,00,00,00,00,00,00,ec,00,00,00,00,00,00,00,00,00,00,00,ec,00,\
  00,00,00,00,00,00,00,00,00,00,ec,00,00,00,00,00,00,00,00,00,00,00,ec,00,00,\
  00,00,00,00,00,00,00,00,00,ec,00,00,00,15,00,00,00,a8,00,00,00,04,01,00,00,\
  08,00,00,00,01,00,00,00,0c,01,00,00,04,00,00,00,00,00,00,00,10,01,00,00,14,\
  00,00,00,00,00,00,00,24,01,00,00,04,00,00,00,00,00,00,00,28,01,00,00,04,00,\
  00,00,00,00,00,00,01,00,14,80,9c,00,00,00,ac,00,00,00,14,00,00,00,44,00,00,\
  00,02,00,30,00,02,00,00,00,02,c0,14,00,44,00,05,01,01,01,00,00,00,00,00,01,\
  00,00,00,00,02,c0,14,00,ff,ff,1f,00,01,01,00,00,00,00,00,05,07,00,00,00,02,\
  00,58,00,03,00,00,00,00,00,14,00,5b,03,02,00,01,01,00,00,00,00,00,01,00,00,\
  00,00,00,00,18,00,ff,07,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,\
  00,00,00,24,00,44,00,02,00,01,05,00,00,00,00,00,05,15,00,00,00,23,5f,63,6b,\
  be,04,3e,32,f8,9f,b4,74,f4,01,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,\
  02,00,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,41,00,64,00,6d,00,\
  69,00,6e,00,69,00,73,00,74,00,72,00,61,00,74,00,6f,00,72,00,00,00,fb,7c,df,\
  7e,a1,7b,06,74,58,54,28,00,63,00,3a,00,5c,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
  ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,aa,ab,ad,01,02,00,00,07,00,00,00,01,\
  00,01,00,01,00,01,00,ac,6f,da,cf,20,a6,2d,89,8a,5e,0a,cd,c2,62,9b,5d,01,00,\
  01,00,01,00,01,00

  1. @echo off
  2. type test.reg|wfr /r:"4\]$" /t:"5\]"|wfr /rnnlic:"00\s\"V\".*" /t:"00">tmp.txt
  3. wfr tmp.txt /any /encout:ucs-2
  4. move tmp.txt test.reg
复制代码
wfr.exe:http://bbs.bathome.net/thread-1909-1-1.html

[ 本帖最后由 pusofalse 于 2008-9-20 04:56 编辑 ]
心绪平和,眼藏静谧。

TOP

你的注册表项应该不只这么一点儿吧?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd.>output.txt
  4. set v="V"
  5. for /f "delims=" %%i in ('type a.reg^|findstr /n .*') do (
  6.         set "var=%%i"
  7.         set var=!var:*:=!
  8.         if defined var set var=!var:000001F5]=000001F4]!
  9.         if "!var:~,3!"=="%V%" set flag=1
  10.         if not defined flag echo.!var!>>output.txt
  11.         if "!var:~-2!"=="00" (set flag=)
  12. )
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

你是想做隐藏帐户吧,呵呵,不要干坏事阿。。。。

TOP

回复 4# wxcute


    这是啥意思啊?全是一组一组的数字……

TOP

你删除一这个键值,再加一个改了的键值,不简单多了

不用这么复杂

TOP

返回列表