如何使用批处理来将某特定字符查找替换成别的字符,并且文件自动保存

比方说想要将某一文件下的所有文件作为对象,将每个文件中的“AB”字符串通通替换成“CD”字符串,并且自动保存。将所有文件作为对象用一个for循环即可,但是不太清楚如何将文... 比方说想要将某一文件下的所有文件作为对象,将每个文件中的 “AB”字符串通通替换成“CD”字符串,并且自动保存。
将所有文件作为对象用一个for循环即可,但是不太清楚如何将文件内容中的字符进行替换,并且自动保存的写法。
谢谢指教。
以下是另外一位高手的解答。已测试过,没有问题,供有类似问题的同学参考。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/b *.txt') do (
(for /f "tokens=1* delims=:" %%j in ('findstr /n .* "%%i"') do (
set s=%%k
if "!s!"=="" (echo.) else set s=!s:AB=CD!&echo !s!))>temp.txt
move /y temp.txt "%%i")
展开
 我来答
ch_w_j
2012-02-06 · TA获得超过534个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:263万
展开全部
说实话,用批处理来做文件替换是挺麻烦的,需要考虑特殊字符、空行等:
@echo off&setlocal enabledelayedexpansion
for %%i in (*.txt) do (
(for /f "tokens=1* delims=:" %% in ('findstr /n .* "%%i"') do (
set "str=%%b"
if defined str1 set "str=!str:AB=CD!"
echo,!str!
))>"%%~ni.temp"
move /y "%%~ni.temp" "%%~fsi"
)
如果用sed来做,一条命令就搞定了:
sed -i "s/AB/CD/g" *.txt
追问
非常感谢回答 但是有些地方看不太懂。能不能解释下呀。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式