DOS001 用批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)

脚本用途说明:
把同一目录下的多个文件中的字符串123替换成字符串abc;
操作步骤:
1.将以下批处理脚本copy到本地任意目录,新建一个批量替换.bat文件(随各人喜好定义,文件名不固定);
2.因脚本中目录已经写成c:\test,故请在c盘创建一个test目录,并在该test目录下创建几个以t开头的txt文件,如:test1.txt,test2.txt.test3.txt等(随各人喜好,文件名、文件个数均不限定),但是创建的txt文件请包涵要替换的字符123;
3.直接点击运行批量替换.bat文件,然后打开创建的每个txt文件,观察会发现123都已经被替换成了abc
总结:
请各位多调试几次,爱动脑动手的小伙伴可以修改一下文件内容以及按照自己的思路尝试修改一下脚本内容,看看修改后执行的效果如何,这样的话,会理解的更为深刻一些
提示:如果是刚开始接触批处理这块的小伙伴,本脚本就是一个很好的学习范例,小伙伴们可以从中去扩展其他知识点,加油!

@echo off

rem 进入批处理文件所在的路径
cd c:\test

echo ***** Replace "123" as "abc" *****
rem 定义要替换的新旧字符串
set strOld=123
set strNew=abc

rem 定义变量修改本地化延期
setlocal enabledelayedexpansion

rem 循环取出要处理的文件名
for /f "tokens=*" %%i in ('dir c:\test\t*.txt /b') do (
    set "var=%%i"
    if not !var!.==. (
rem 单个文件一行行处理,将旧字段替换成新字段
	for /f "tokens=*" %%j in (!var!) do (
	    set "tmp=%%j"
	    if not !tmp!.==. (
	      set "tmp=!tmp:%strOld%=%strNew%!"
          rem 将处理后的每一行记录追加到temp.txt文件中
	      echo !tmp!>>temp.txt
	    )
	)
    rem 在单个文件的每一行经过替换操作后,将处理后的文本从temp.txt临时文件剪贴到目标处理文件中(剪贴后临时文件会自动删除)
	move temp.txt !var!
    )
)

pause
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章