在网上找了很久,想用 CMD/BAT 批处理的方式,来进行文件的字符串搜索替换工作。
看了,试了,一大堆。不是有问题,就是有瑕疵。不能完美解决问题。
只好自己想,自己做了。
我给出的方案,完美解决问题。而且简单。简单的不能再简单了。
@echo off setlocal EnableDelayedExpansion set "CurrCD=%~dp0" set "strOld=aaaaa" set "strNew=itwenda.com" :: 将当前目录(包括子目录)下的所有 TXT 文本中的 aaaaa 替换为 itwenda.com for /f %%i in ('dir /b /s /a:-d *.txt') do ( powershell -Command "(gc %%i) -replace '%strOld%', '%strNew%' | Out-File %%i" )
补充:如何删除包含特定字符串的所有行呢?
@echo off setlocal EnableDelayedExpansion :: 删除 d:\aaa.txt 中,包含字符串 abc 的所有行 set "FileName=d:\aaa.txt" set "sDelLine=abc" powershell -Command "$data = foreach($line in gc %FileName%){ if($line -notlike '*%sDelLine%*') {$line}} $data | Out-File %FileName%"