如题,我有一段注册表文件,需要用批处理导入到注表册中,但是该注册表在32位和64位系统下的路径不同,所以用批处理导入前必须处理一下:
32位的路径是[HKEY_LOCAL_MACHINE\SOFTWARE\Le] 64位的路径是:[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Le],
前面做个版本判断,根据版本把相对应的路径值赋予给变量X,再把变量X替换注册表文件中的路径即可。可是在替换的时候出现问题:
注册表文件内容是这样的:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Le]
"x"=ss="
"li"="Rf"
"jur"="6WHrtyr"
"llxj"="pW"
需要把注册表文件的第三行替换成相应的路径,在网上找的代码如下:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (xyzc.txt) do (
- set /a num+=1
- if !num!==3 (echo b=4567) else echo %%a
- )>>temp.txt
- move temp.txt xyzc.txt
- pause
复制代码 该代码在一般情况下确实可以进行指定行的内容替换工作,但是用在我上面的注册表文件中却行不通,因为运行后,批处理会把空行删除,然后再进行替换,这样一来,原本的第二行就没有了,第三行变成了第二行,第四行变成了第三行,替换的效果如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Le]
[HKEY_LOCAL_MACHINE\SOFTWARE\Le]
"li"="Rf"
"jur"="6WHrtyr"
"llxj"="pW"
根本达不到我想要的结果,有没有大神教教我这个批处理要怎么写才能不管前面有没有空行都能正确的替换我指定的行的内容?? |