Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 批处理文件修改导出十六进制注册表值中的一个字符_For Loop_Batch File_Registry_Hex_Winpe - Fatal编程技术网

For loop 批处理文件修改导出十六进制注册表值中的一个字符

For loop 批处理文件修改导出十六进制注册表值中的一个字符,for-loop,batch-file,registry,hex,winpe,For Loop,Batch File,Registry,Hex,Winpe,我正在寻找一种方法来修改作为导出注册表值的.reg(或.txt)文件。我已经可以导出注册表文件了,我只需要一种方法来更改十六进制值中间的一个字符。下面是导出注册表值的一部分,粗体是我希望更改的内容 “F”=十六进制:02,00,01,00,00,00,00,00,b4,42,39,6f,86,fd,cd,01,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

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

“F”=十六进制:02,00,01,00,00,00,00,00,b4,42,39,6f,86,fd,cd,01,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,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始终处于相同位置

更好: 除了batch/cmd文件之外,还有什么可以用来修改已加载的脱机注册表配置单元以完成相同的任务吗

提前感谢

~Mike

首先将其放入变量中(我将使用X)

然后你可以用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变量中

很抱歉延迟回复,但您的方法非常有效。我花了一点时间来理解这些命令,但我最终还是明白了。
set X=%1%10%2%