中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理怎么在多个文本中查找指定内容,并添加新内容
作者:
标题: 批处理怎么在多个文本中查找指定内容,并添加新内容 上一主题 | 下一主题
binsea
新手上路





积分 3
发帖 3
注册 2010-4-16
状态 离线
『楼 主』:  批处理怎么在多个文本中查找指定内容,并添加新内容

一个文件夹下有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





这个代码不能执行,帮忙看看哪里错了。

2010-4-29 10:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 2 楼』:  

看看这样行不行:
@echo off
for %%a in (*.txt) do (
     (for /f "tokens=1,2" %%b in ('type "%%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


2010-4-29 10:34
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 3 楼』:  

for 中最后一行:
del /q %%a&ren temp %%a
拆成两行
del /q %%a
ren temp %%a


2010-4-29 11:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
binsea
新手上路





积分 3
发帖 3
注册 2010-4-16
状态 离线
『第 4 楼』:  

拆成两行,可以了。


另外问一下  第一个FOR里  %%a in (*.txt)   改成%%a in ('dir *.txt')可以吗?两者的区别是什么

2010-4-29 11:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
binsea
新手上路





积分 3
发帖 3
注册 2010-4-16
状态 离线
『第 5 楼』:  

好像还是不行,文件名都是汉字就不行了

2010-4-29 11:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by binsea at 2010-4-29 11:46:
好像还是不行,文件名都是汉字就不行了

这个不是汉字问题,而是文件名中有空格的原因,更改如下可解决:
@echo off
for %%a in (*.txt) do (
     (for /f "usebackq 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
回楼上:for 的用法找置顶贴子,讲的很详细

2010-4-29 12:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 7 楼』:  

fr *.txt -ric:"(.*乙烯.*)" -t:"\1铁矿\r\n铜矿\r\n锡矿\r\n镍矿\r\n"

[ Last edited by yishanju on 2010-4-29 at 15:21 ]




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2010-4-29 14:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: