2013-02-08 59 views
1

我正在寻找一种方法来修改导出的注册表值的.reg(或.txt)文件。我已经可以导出注册表文件了,我只需要一种方法来改变一个大约在十六进制值中间的字符。以下是导出的注册表值的一部分,Bolded正是我期待改变的。批处理文件修改导出的十六进制注册表值中的一个字符

“F”= hex:02,00,01,00,00,00,00,00,b4,42,39,6f,86,fd,cd,01,00,00,00, 00,00,00,00,\
00,d7,2f,f1,d8,0e,e9,cd,01,00,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,\
f4,01,00,00,01,02,00,00,,02,00,00,00,00,00,00,00, 00,2e,00,01,00,00,00,00,\
00,00,00,88,52,35,00

我需要改变到,然后将其保存到一个reg文件然后导入它。看起来命令可能是我需要的,但我已经阅读了FOR命令,我仍然对它感到困惑。

另外的信息: 这将在WinPE 3.0环境 这十六进制值从PC到PC的不同来执行,但11将总是在相同的位置。

变得更棒: 难道还有比我可以用它来修改加载的脱机注册表配置单元来完成同样的事情批处理/ CMD文件以外的东西?

在此先感谢
〜麦克

回答

0

首先把它变成一个变量(我将使用X)

set x="F"=hex:02,00,01,00,00,00,00,00,b4,42,39,6f,86,fd,cd,01,00,00,00,00,00,00,00,\00,d7,2f,f1,d8,0e,e9,cd,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\f4,01,00,00,01,02,00,00,11,02,00,00,00,00,00,00,00,00,2e,00,01,00,00,00,00,\00,00,00,88,52,35,00 

然后你就可以通过

set x=%x:11=10% 
用10代替11

注意:如果脚本中会有两个11,请不要执行此方法,因为它会全部替换它们。

如果还有更多的11,但11是在同一个确切点(如果它是58个字符的行,那么它必须是58个字符在下一行),所以你会计数字符导致达到11,并采取X变量,并命名为1的另一个变量,内容是这样的:

set 1=%x:~0,178% 

然后找出多少字符是11到结束之后并命名变量2加2等等你最终跳过了11:

set 2=%x:~180,70% 

然后船尾呃,你刚刚输入在这种情况下,10间新的值,因此这将是:

set X=%1%10%2% 

然后,你必须在X变量的新输出回来了!

+0

对不起,延迟响应,但你的方法工作完美。花了我一点时间来理解命令,但我最终得到了它。 – mikefletcher85 2013-02-20 17:03:38

相关问题