问个批处理如何修改文件内容的问题

kome2000 2011-11-24 06:41:25
DOS 批处理中,
我想在一个文件中寻找某个字符串,
找到的话,替换成另外的字符串

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

在网上找到个代码

@echo off
cls
setlocal enabledelayedexpansion
for /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



但我对批处理的东西 还是了解甚少!
希望高人给我解读一下这段代码啥意思!
多谢!
...全文
319 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kome2000 2011-11-28
  • 打赏
  • 举报
回复
那算了,不如写个JAR搞定吧!
Gloveing 2011-11-24
  • 打赏
  • 举报
回复
for set 命令循环什么的 dos 下看帮助就明白了,
我只说一点:
!zf! 像这种是延迟变量;
批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在读取某行命令时,如果其中有变量,则变量值应该取上一行的值,而为了能够及时感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。

@echo off
setlocal enabledelayedexpansion
set a=4
set a=5 & echo !a!
pause
结果:5
lengxujun 2011-11-24
  • 打赏
  • 举报
回复
这种事情用批处理来做?还真是...
恨天低 2011-11-24
  • 打赏
  • 举报
回复
Linux下vim

:%s#ABC#//ABC#g

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧