批处理怎样替换文件夹下所有文本内容?

求一个批量替换文件夹中文本中内容的文件。。。
举例说明哈。
比如:D盘 1文件夹下 有1.txt 2.txt 3.txt。。。 还有文件夹a 文件夹B 文件夹C 切文件夹里还有txt及文件夹。。
文件夹a 文件夹B 文件夹C 这三个文件夹是在 D:\1\ 下面, 下面还有子文件夹
把所有txt文件里 禁止2 替换成 允许1


请教如何替换 整个D:\1 文件夹下 所有txt文本里内容啊???


多个内容修改 下面那个代码还适用吗?
比如 禁止2改成允许1
还有 禁止5 改成 允许5
哈※ 改成 呵


@echo off
setlocal disabledelayedexpansion


set "dir=D:\1"
set "old=禁止2"
set "new=允许1"


findstr /s /m /c:"%old%" "%dir%\*.txt" >..tmp


for /f "delims=" %%i in (..tmp) do (
findstr /n .* "%%i" >..tmp
(
for /f "delims=" %%a in (..tmp) do (
set str=%%a
setlocal enabledelayedexpansion
set "str=!str:%old%=%new%!"
echo,!str:*:=!
endlocal
)
) >"%%i"
)


del ..tmp
复制代码


@echo off
setlocal disabledelayedexpansion
title 修改中...


rem 设置
set "dir=D:\1"
set replace_list="禁止2=允许1" "禁止5=允许5" "哈※=呵"


rem 输出文件列表
dir /s /b /a:-d-r "%dir%\*.txt" >..tmp || goto exit


rem 统计文件个数
for /f %%i in (' "find /c /v "" <..tmp" ') do (
set /a n_total = %%i, n_current = 0
)


rem 替换
set "s= "
for /f "delims=" %%i in (..tmp) do (
set /a n_current += 1
findstr /n .* "%%i" >..tmp
(
for /f "delims=" %%a in (..tmp) do (
set str=%%a
setlocal enabledelayedexpansion
set /p =%s: =%!n_current! / %n_total% <nul >con
set str=!str:*:=!
for %%a in (%replace_list%) do (
if defined str set str=!str:%%~a!
)
echo,!str!
endlocal
)
) >"%%i"
)


:exit
title 完成
del ..tmp 2>nul
echo,
echo 按任意键退出...
pause >nul


本帖最后由 tmplinshi 于 2011-6-19 14:24 编辑




建议用 bwfr,替换速度非常快。
bwfr.exe "D:\1\*.txt" -s -f -argfile:list.txt
复制代码
list.txt 的文件写法:
禁止2->允许1
禁止5->允许5
哈※->呵


----------------------------------------------------------------------
也可以使用其他的分隔符,例如:
bwfr.exe "D:\1\*.txt" -s -f -argfile:list.txt -dlm:"|"
复制代码
list.txt 的文件写法:
禁止2|允许1
禁止5|允许5
哈※|呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值