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

[文本处理] 批处理如何替换文本中指定行的内容??

如题,我有一段注册表文件,需要用批处理导入到注表册中,但是该注册表在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"

需要把注册表文件的第三行替换成相应的路径,在网上找的代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (xyzc.txt) do (
  3.    set /a num+=1
  4.    if !num!==3 (echo b=4567) else echo %%a
  5. )>>temp.txt
  6. move temp.txt xyzc.txt
  7. pause
复制代码
该代码在一般情况下确实可以进行指定行的内容替换工作,但是用在我上面的注册表文件中却行不通,因为运行后,批处理会把空行删除,然后再进行替换,这样一来,原本的第二行就没有了,第三行变成了第二行,第四行变成了第三行,替换的效果如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Le]
[HKEY_LOCAL_MACHINE\SOFTWARE\Le]
"li"="Rf"
"jur"="6WHrtyr"
"llxj"="pW"

根本达不到我想要的结果,有没有大神教教我这个批处理要怎么写才能不管前面有没有空行都能正确的替换我指定的行的内容??

yhcfsr 发表于 2019-2-12 00:29



    亲测无效,是乱码。。。。

TOP

回复 5# WHY


    又学习了一招,宛美解决,只是如果方便 的话能不能给我解释一下这个命令么?还有后面的参数的意义,有点不太懂

TOP

返回列表