Board logo

标题: [文本处理] [已解决]批处理如何删除文本中不包含指定字符串的行? [打印本页]

作者: sinokaire    时间: 2012-5-8 18:06     标题: [已解决]批处理如何删除文本中不包含指定字符串的行?

本帖最后由 sinokaire 于 2012-5-10 09:52 编辑

请教各位前辈:
如何用批处理实现删除D:\a\b\c.txt中,不含指定字符串"RRFF"的行.
其中:a为系统时间当前年,b为系统时间当前月,c为系统时间当前日。
例如:当前系统时间为:2010.12.23,则删除D:\2010\12\23.txt中不含"RRFF"行。

假设23.txt中的内容为:

001 RRFF 12345678 12
002 asdf 12345678 12
003 aaaa 12345678 12
004 RRFF 12345678 12

运行批处理后,23.txt中的内容变为:

001 RRFF 12345678 12
004 RRFF 12345678 12

以上,感谢!
作者: apang    时间: 2012-5-8 18:58

这样可以不?
  1. @echo off
  2. set "name=d:\%date:~,4%\%date:~5,2%\%date:~8,2%.txt"
  3. (for /f "delims=" %%a in ('findstr /i "RRFF" %name%') do (
  4.    echo %%a
  5. ))>$
  6. move $ %name%
复制代码

作者: sinokaire    时间: 2012-5-8 19:45

本帖最后由 sinokaire 于 2012-5-8 19:56 编辑

回复 2# apang


    感谢前辈的回复,有一个问题,我这的程式生成的目录和文件名的现状是这样的:

比如今天是2012.05.08,程式自动建议的目录和txt文件为:d:\2012\5\8.txt,而不是D:\2012\05\08.txt。。。。

求前辈再帮下忙,感谢了!
作者: apang    时间: 2012-5-8 20:18

回复 3# sinokaire
  1. @echo off
  2. set/a b=100%date:~5,2%%%100
  3. set/a c=100%date:~8,2%%%100
  4. set "name=d:\%date:~,4%\%b%\%c%.txt"
  5. (for /f "delims=" %%a in ('findstr /i "RRFF" %name%') do (
  6.    echo %%a
  7. ))>$
  8. move $ %name%
复制代码

作者: sinokaire    时间: 2012-5-9 07:48

回复 4# apang


    感谢前辈,搞定了!谢谢您了!
作者: sinokaire    时间: 2012-5-9 12:43

本帖最后由 sinokaire 于 2012-5-9 12:46 编辑

回复 4# apang


    前辈,首先感谢你的给力回复!由于我个人的不严谨,未仔细确认我处软件生成的目录及文件命名格式。导致您给的程式暂时无法使用。

我处的软件生成目录及文件格式明确如下:

若当前系统日期为:2012.5.8,则生成目录为:D:\test\log\V_COM\2012_05\8.txt

即:生成一个“年_月”目录,在这个目录里生成“日.txt” ; 个位数月份用:01、02....09表示,个位数日用 1、2...9表示。

以上,不知有没有表达清楚...

望前辈能在不忙的时候,再辛苦一次,给回复一个解决方法。

拜谢!
作者: sinokaire    时间: 2012-5-9 12:56

我自己照着您给的回复改了一下,您看行不?
@echo off

set/a c=100%date:~8,2%%%100

set "name=D:\lcdtest\Log\V_COM\%date:~,4%_%date:~5,2%\%c%.txt"

(for /f "delims=" %%a in ('findstr /i "RRFF" %name%') do (

   echo %%a

))>$

move $ %name%
作者: gawk    时间: 2012-5-9 12:58

回复 7# sinokaire


    你先亲自测试一下行不?
作者: sinokaire    时间: 2012-5-9 13:02

回复 8# gawk

嗯,我试了一下,好用。
只是不知道会不会出现别的问题。
作者: gawk    时间: 2012-5-9 13:09

回复 9# sinokaire


    潜在问题1:系统日期格式不一定是yyyy-mm-dd
作者: sinokaire    时间: 2012-5-9 13:26

回复 10# gawk


    嗯,明白。

另外,有个想法不知道能不能用BAT实现。

一个文件夹内(比如:D:\11),有很多个txt文本,命名无规则。能否用BAT实现判断这些txt文本中,有多少个文本的内容中是含有字符串“AAAA”的,将包含此字符串的文本数量统计出来。
作者: yangfengoo    时间: 2012-5-10 10:23

请开新帖,很容易实现
作者: gawk    时间: 2012-5-10 13:07

回复 11# sinokaire


    基本上所有关于文本处理类的想法都是可以实现的
作者: 秋风·飞扬    时间: 2012-5-13 19:50

回复 13# gawk


     告诉你一个秘密,学生-14 木有小JJ




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2