在网上找了很久,想用 CMD/BAT 批处理的方式,来进行文件的字符串搜索替换工作。
看了,试了,一大堆。不是有问题,就是有瑕疵。不能完美解决问题。
只好自己想,自己做了。
我给出的方案,完美解决问题。而且简单。简单的不能再简单了。
@echo off
setlocal EnableDelayedExpansion
set "CurrCD=%~dp0"
set "strOld=aaaaa"
set "strNew=zzzzz"
:: 将当前目录(包括子目录)下的所有 TXT 文本中的 aaaaa 替换为 zzzzz
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%"