Batch File修改导出的十六进制注册表值中的一个字符

时间:2013-02-08 19:29:35

标签: for-loop batch-file registry hex winpe

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

  

“F”=己烷: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

我需要将 11 更改为 10 ,然后将其保存到reg文件然后导入它。似乎 FOR 命令可能是我需要的,但我已经阅读了 FOR 命令并且仍然对它感到困惑。

更多信息: 这将在WinPE 3.0环境中执行 该十六进制值因PC而异,但11始终处于相同位置。

更好: 除了批处理/ cmd文件之外,还有什么可以用来修改加载的离线注册表配置单元来完成同样的事情吗?

提前致谢
〜麦克

1 个答案:

答案 0 :(得分: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

然后你可以用10替换11替换

set x=%x:11=10%

注意:如果脚本中有两个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变量中得到了新的输出!