中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 10:54
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理怎么在多个文本中查找指定内容,并添加新内容
可打印版本  1,054 / 6
第1楼 binsea 发表于 2010-04-29 10:22
新手上路 发帖 3 积分 3
批处理怎么在多个文本中查找指定内容,并添加新内容
一个文件夹下有100多文本文件,每个TXT文件的内容如下:

【1.txt】
2000 橡胶
4000 乙烯
400 聚苯乙烯
200 碳4
.......

【2.txt】
1500 橡胶
150 石油焦
240 乙烯
1000 石脑油
......

【3.txt】
2500 重油
640 柴油
140 乙烯
.....

现在想要在这些文本文件中查找“乙烯”,并在其下面添加4行内容:


@echo off
for %%a in (*.txt) do (
(for /f "tokens=1,2" %%b in (%%a) do (
if "%%c" equ "乙烯" (
echo %%b %%c
echo %%b 铁矿
echo %%b 铜矿
echo %%b 锡矿
echo %%b 镍矿
) else (
echo %%b %%c
)
))>temp
del /q %%a&ren temp %%a
)
echo 搞定!&pause>nul





这个代码不能执行,帮忙看看哪里错了。
第2楼 qinchun36 发表于 2010-04-29 10:34
高级用户 发帖 400 积分 609
看看这样行不行:
第3楼 freeants001 发表于 2010-04-29 11:27
中级用户 发帖 244 积分 330 来自 湖北
for 中最后一行:
del /q %%a&ren temp %%a
拆成两行
del /q %%a
ren temp %%a
第4楼 binsea 发表于 2010-04-29 11:37
新手上路 发帖 3 积分 3
拆成两行,可以了。


另外问一下 第一个FOR里 %%a in (*.txt) 改成%%a in ('dir *.txt')可以吗?两者的区别是什么
第5楼 binsea 发表于 2010-04-29 11:46
新手上路 发帖 3 积分 3
好像还是不行,文件名都是汉字就不行了
第6楼 freeants001 发表于 2010-04-29 12:43
中级用户 发帖 244 积分 330 来自 湖北
Originally posted by binsea at 2010-4-29 11:46:
好像还是不行,文件名都是汉字就不行了


这个不是汉字问题,而是文件名中有空格的原因,更改如下可解决:


回楼上:for 的用法找置顶贴子,讲的很详细
第7楼 yishanju 发表于 2010-04-29 14:23
银牌会员 发帖 1,357 积分 1,488
fr *.txt -ric:"(.*乙烯.*)" -t:"\1铁矿\r\n铜矿\r\n锡矿\r\n镍矿\r\n"

[ Last edited by yishanju on 2010-4-29 at 15:21 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023