读书人

问个批处理怎么修改文件内容的有关问题

发布时间: 2012-09-07 10:38:15 作者: rapoo

问个批处理如何修改文件内容的问题
DOS 批处理中,
我想在一个文件中寻找某个字符串,
找到的话,替换成另外的字符串

比如:想在 init.txt 文件中寻找"ABC"
找的的话替换成 "//ABC"

在网上找到个代码

C/C++ code
@echo offclssetlocal enabledelayedexpansionfor /f "tokens=*" %%a in ('findstr /i [abc] b.txt') do ( set zf=%%a set zf=!zf:abc=a`! for /f "tokens=1* delims=`" %%i in ("!zf!") do (  if "%%j" neq "" (   set jg=%%j   set jg=!jg:~,1!   echo !jg!  ) ))pause


但我对批处理的东西 还是了解甚少!
希望高人给我解读一下这段代码啥意思!
多谢!

[解决办法]
for set 命令循环什么的 dos 下看帮助就明白了,
我只说一点:
!zf! 像这种是延迟变量;
批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在读取某行命令时,如果其中有变量,则变量值应该取上一行的值,而为了能够及时感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。

@echo off
setlocal enabledelayedexpansion
set a=4
set a=5 & echo !a!
pause
结果:5

读书人网 >C语言

热点推荐