问个批处理怎么修改文件内容的有关问题
问个批处理如何修改文件内容的问题DOS 批处理中,我想在一个文件中寻找某个字符串,找到的话,替换成另外的字
问个批处理如何修改文件内容的问题
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