Dos中替换指定行内容
dos吧
全部回复
仅看楼主
level 4
zhendong_shen 楼主
我在D盘有一个档案aa.txt,档案中的内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<REGISTER_DRIVE_INFOS>
<VERSION>1.0</VERSION>
     <DRIVEINFO>
         <SERIAL>12345678</SERIAL>
         <NUM>ABCDEFGHIJKLMN</NUM>
      </DRIVEINFO>
</REGISTER_DRIVE_INFOS>
我要将其中第6行“<NUM>ABCDEFGHIJKLMN</NUM>” 改为 “<NUM>987654321</NUM>” ,其余行的内容还保留不变,请问各位大侠用批处理如何实现,谢谢!
2010年11月13日 12点11分 1
level 4
zhendong_shen 楼主
我现在已经写好的批处理如下:
@echo off
set _Time_Line=6
set srcfile=d:\aa.txt
set dstfile=d:\bb.txt
set Change=<NUM>987654321</NUM>
set row=0
>"%dstfile%" type nul
setlocal enabledelayedexpansion
for /f "tokens=1* delims=" %%a in ('findstr .* %srcfile%') do (
     set /a row+=1
     if !row! equ %_Time_Line% (
         >>"%dstfile%" echo %Change%
     ) else (
         >>"%dstfile%" echo %%a
     )
)
但现在的问题是我要替换的内容中存在“< >”,会报错,如果把这些特定字符去掉,就可以正常执行,请问有没有办法让我的批处理正常运行还可以显示这些特定字符呀。
2010年11月13日 12点11分 2
level 6
路过...............................
2011年01月03日 06点01分 3
level 1
可以在<前加上转义字符(^),另外不是通过变量来加,将change变量的<num>和</num>,将>>"%dstfile%" echo %Change%改成>>"%dstfile%" echo ^<NUM^>%Change%^</NUM^>即可。
2011年10月15日 17点10分 4
level 1
少打了几个字,是将change变量的<num>和</num>删去,又或者你可以用引号括住要输入的内容,然后待替换之后再重新用for读取文档把引号删掉
2011年10月15日 17点10分 5
level 13
^>添加转义符号^
2011年10月16日 01点10分 6
level 13
echo ^& ^> ^<
2011年10月16日 01点10分 7
1