标题: [文本处理] 批处理如何在多个文本文件中查找指定内容并做标记? [打印本页]
作者: binsea 时间: 2010-4-16 10:28 标题: 批处理如何在多个文本文件中查找指定内容并做标记?
一个文件夹下有100多文本文件,每个TXT文件的内容如下:
【1.txt】
2000 橡胶
4000 乙烯
400 聚苯乙烯
200 碳4
.......
【2.txt】
1500 橡胶
150 石油焦
240 乙烯
1000 石脑油
......
【3.txt】
2500 重油
640 柴油
140 乙烯
.....
现在我想把这个文件夹下的所有TXT文件里的“乙烯”那一行前面加个“;号”,注释掉,不要了。请问怎么写批处理啊。
注:文件名都是中文的,不是1、2、3、4这样排序的。
[ 本帖最后由 binsea 于 2010-4-18 14:16 编辑 ]
作者: batman 时间: 2010-4-16 11:27
请测试成功后再运行:- @echo off
- for %%a in (*.txt) do (
- (for /f "tokens=1,2" %%b in (%%a) do (
- if "%%c" equ "乙烯" (
- echo ;%%b %%c
- ) else (
- echo %%b %%c
- )
- ))>temp
- del /q %%a&ren temp %%a
- )
- echo 搞定!&pause>nul
复制代码
[ 本帖最后由 batman 于 2010-4-16 11:35 编辑 ]
作者: binsea 时间: 2010-4-16 12:19
非常感谢,我试了一下。
继续学习中........
作者: GNU 时间: 2010-4-16 13:45
聚苯乙烯需要注释么?
作者: binsea 时间: 2010-4-17 01:29
回4楼,如果 聚苯乙烯 这样的含有 乙烯 字眼的也算,该怎么判断呢?望不吝赐教
作者: binsea 时间: 2010-4-17 01:35
另外还想问一下if的书写格式问题。
if !var:~-2,2%! equ "乙烯" (…)
这种写法不对吗?应该怎么写?
作者: sgaizxt001 时间: 2010-4-17 06:38
if "!var:~-2!" equ "乙烯" (…)
[ 本帖最后由 sgaizxt001 于 2010-4-17 08:35 编辑 ]
作者: binsea 时间: 2010-4-17 08:43 标题: 标题
谢楼上的。
能不能给我详细解释一下字符变量左取和右取的书写格式以及意思?就像vb里的left和right?我在论坛没找到。我是新手。
作者: GNU 时间: 2010-4-17 13:09 标题: 回复 8楼 的帖子
批处理set命令截取字符详解
http://bbs.bathome.net/thread-996-1-1.html
批处理set命令变量字符截取点点通
http://bbs.bathome.net/thread-40-1-1.html
批处理新手set命令截取字符练习工具
http://bbs.bathome.net/thread-1149-1-1.html
作者: GNU 时间: 2010-4-17 13:12
- sed -i "/乙烯/s/^/;/" *.txt
复制代码
作者: binsea 时间: 2010-4-18 11:24 标题: 标题
按照版主的代码拓展一下。如果每个文本含有多个 乙烯 ,要保留第一个,其他的注释掉。- echo off&setlocal enabledelayedexpansion
- for %%a in (*.txt) do (
- set num=0
- (for /f "tokens=1,2" %%b in (%%a) do (
- if "%%c" equ "乙烯" (
- set /a num+=1
- if num==1 (
- echo %%b %%c
- ) else (
- echo ;%%b %%c
- )
- ) else (
- echo %%b %%c
- )
- ))>temp
- del /q %%a&ren temp %%a
- )
- echo 搞定!&pause>nul
复制代码
我编辑了一下
[ 本帖最后由 binsea 于 2010-4-18 14:14 编辑 ]
作者: binsea 时间: 2010-4-18 11:25
我想加个计数器,每发现一次 乙烯,加1,if (第一次发现,等于1) (留下), if (大于1) (注释掉)
可是这个计数器不起作用,输出的结果是所有的“乙烯”都注释掉了,第一个也没留下,是什么原因?
[ 本帖最后由 binsea 于 2010-4-18 14:19 编辑 ]
作者: GNU 时间: 2010-4-18 12:26 标题: 回复 12楼 的帖子
把完整的代码贴出来看看
作者: GNU 时间: 2010-4-18 16:07 标题: 回复 11楼 的帖子
复制代码
作者: binsea 时间: 2010-4-29 08:41 标题: 又拓展一下,不想新开帖了,这样内容集中一点
拓展问题:在所有文本中查找“乙烯”,“乙烯”内容保留,然后在下面增加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
复制代码
这样写的执行不了,帮忙看看哪里错了。
还想问个问题:第一个FOR里面 %%a in (*.txt),为什么不用%%a in ('dir *.txt')呢?两者有什么区别?
[ 本帖最后由 binsea 于 2010-4-29 08:47 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |