[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何在多个文本文件中查找指定内容并做标记?

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

请测试成功后再运行:
  1. @echo off
  2. for %%a in (*.txt) do (
  3.      (for /f "tokens=1,2" %%b in (%%a) do (
  4.          if "%%c" equ "乙烯" (
  5.             echo ;%%b %%c
  6.             ) else (
  7.             echo %%b %%c
  8.           )
  9.        ))>temp
  10.        del /q %%a&ren temp %%a
  11. )
  12. echo 搞定!&pause>nul
复制代码

[ 本帖最后由 batman 于 2010-4-16 11:35 编辑 ]
***共同提高***

TOP

非常感谢,我试了一下。
继续学习中........

TOP

聚苯乙烯需要注释么?

TOP

回4楼,如果  聚苯乙烯  这样的含有   乙烯  字眼的也算,该怎么判断呢?望不吝赐教

TOP

另外还想问一下if的书写格式问题。

if !var:~-2,2%! equ "乙烯" (…)

这种写法不对吗?应该怎么写?

TOP

if "!var:~-2!" equ "乙烯" (…)

[ 本帖最后由 sgaizxt001 于 2010-4-17 08:35 编辑 ]

TOP

标题

谢楼上的。
能不能给我详细解释一下字符变量左取和右取的书写格式以及意思?就像vb里的left和right?我在论坛没找到。我是新手。

TOP

回复 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

TOP

  1. sed -i "/乙烯/s/^/;/" *.txt
复制代码

TOP

标题

按照版主的代码拓展一下。如果每个文本含有多个 乙烯 ,要保留第一个,其他的注释掉。
  1. echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.txt) do (
  3. set num=0
  4. (for /f "tokens=1,2" %%b in (%%a) do (
  5. if "%%c" equ "乙烯" (
  6. set /a num+=1
  7. if num==1 (
  8.         echo %%b %%c
  9.           ) else (
  10.                  echo ;%%b %%c
  11.                  )
  12. ) else (
  13. echo %%b %%c
  14. )
  15. ))>temp
  16. del /q %%a&ren temp %%a
  17. )
  18. echo 搞定!&pause>nul
复制代码
我编辑了一下

[ 本帖最后由 binsea 于 2010-4-18 14:14 编辑 ]

TOP

我想加个计数器,每发现一次 乙烯,加1,if (第一次发现,等于1) (留下), if (大于1) (注释掉)

可是这个计数器不起作用,输出的结果是所有的“乙烯”都注释掉了,第一个也没留下,是什么原因?

[ 本帖最后由 binsea 于 2010-4-18 14:19 编辑 ]

TOP

回复 12楼 的帖子

把完整的代码贴出来看看

TOP

回复 11楼 的帖子

  1. if !num!==1
复制代码

TOP

又拓展一下,不想新开帖了,这样内容集中一点

拓展问题:在所有文本中查找“乙烯”,“乙烯”内容保留,然后在下面增加4条内容,前面的数字与“乙烯”相同。
  1. @echo off
  2. for %%a in (*.txt) do (
  3.      (for /f "tokens=1,2" %%b in (%%a) do (
  4.          if "%%c" equ "乙烯" (
  5.             echo %%b %%c
  6.             echo %%b 铁矿
  7.             echo %%b 铜矿
  8.             echo %%b 锡矿
  9.             echo %%b 镍矿
  10.             ) else (
  11.             echo %%b %%c
  12.           )
  13.        ))>temp
  14.        del /q %%a&ren temp %%a
  15. )
  16. echo 搞定!&pause>nul
复制代码


这样写的执行不了,帮忙看看哪里错了。

还想问个问题:第一个FOR里面 %%a in (*.txt),为什么不用%%a in ('dir *.txt')呢?两者有什么区别?

[ 本帖最后由 binsea 于 2010-4-29 08:47 编辑 ]

TOP

返回列表