2011-03-17 61 views
0

我想写一个批处理脚本/ vbs应该逐行读取文本文件并搜索关键字。如果找到关键字,它应该重定向到输出文件。批量/ vbs读取文本文件

样品日志是如下,

星期二01/09/2000 下午6时53
-------- C:\数据--------
C:\ DATA \ 2009年
C:\ DATA \ 2010
C:\ DATA \ 2011
C:\ DATA \则Filename.txt
C:\ DATA \ Fileusage
C:\ DATA \ Guidline.xml C:\ Data \ 2009 \ 12
C:\数据\ 2009 \ 12 \ 01 \ 667e33999.txt
C:\数据\ 2009 \ 12 \ 01 \ 667e45454999.xml
C:\数据\ 2009 \ 12 \ 09 \ 667dfder999.pdf
Ç :\数据\ 2009 \ 12 \ 09 \ 667e332324.pdf
C:\数据\ 2009 \ 12 \ 09 \ 867fdfe2323.pdf
C:\资源\发现\ 233.txt
C:\资源\发现\ 234.txt
C:\资源\发现\ 235.txt
C:\资源\发现\ 236.txt
C:\资源\发现\ 237.txt
C:\资源\发现\ 238。 txt
C:\资源\发现\历时\ 433.txt
C:\资源\发现\历时\ 239.txt
C:\资源\发现\历时\ 890.txt
C:\资源\发现\历时\ 121.txt
C:\资源\发现\历时\ 009.txt
C:\资源\发现\历时\ 999.txt
总文件列入:
12文件(一个或多个)7234336个字节
0 Dir(s)3,413,392,345字节免费

基本上我想捕捉任何以C:\ D开头的行ATA \年份\月和C:\资源\发现\历时

输出如下

C:\数据\ 2009 \ 12 \ 01 \ 667e33999.txt
C:\数据\ 2009 \ 12 \ 01 \ 667e45454999.xml
C:\数据\ 2009 \ 12 \ 09 \ 667dfder999.pdf
C:\数据\ 2009 \ 12 \ 09 \ 667e332324.pdf
C:\数据\ 2009 \ 12 \ 09 \ 867fdfe2323.pdf
C:\资源\发现\历时\ 433.txt
C:\资源\发现\历时\ 239.txt
C:\资源\遇见NGS \历时\ 890.txt
C:\资源\发现\历时\ 121.txt
C:\资源\发现\历时\ 009.txt
C:\资源\发现\历时\ 999.txt

任何人都可以帮我一把吗?

+0

你目前的代码是什么?阅读'for /?','cmd /?'和'set /?',或者看看[dostips.com](http://www.dostips.com) – jeb 2011-03-17 14:32:08

+0

@jeb:这比这更容易。 – Joey 2011-03-17 17:11:50

回答

2

您可以使用findstr

findstr /b /r "C:\\Resource\\Findings\\Lasted\\ C:\\Data\\[0-9][0-9][0-9][0-9]\\[0-9][0-9]\\." data.dump 

findstr是从一个文件,该文件是我们在这里做什么过滤线。首先我们启用与/r的正则表达式匹配。不要被欺骗,这些都是非常非常小的正则表达式,它们会不时地破坏,所以它们可能会很棘手。 /b用于匹配一行的开头。然后是空格分隔的要查找的列表,在此例中为C:\Resource\Findings\Lasted\C:\Data\Year\Month,其中年份为四位,月份为两位数。

+0

我也认为findstr,但我认为它不能搜索regEx-Basic模式下的两个不同的字符串 – jeb 2011-03-17 18:02:11

+0

下面是我的批处理脚本..任何人都可以帮我修复它? @echo off> result&setlocal enabledelayedexpansion for/f“tokens = * delims =”%% i in('dir/b file.txt')do( findstr/b/r“C:\\ Resource \\ Findings \\ Lasted \\ C:\\ Data \\ [0-9] [0-9] [0-9] [0-9] \\ [0-9] [0-9] \\。“< %%i > > result.txt ) – user664481 2011-03-19 09:34:13

+0

@user:以正常方式提问(请包括更多信息)。关于随机答案的随机评论通常被忽略(我现在也会这样做)。 – Joey 2011-03-20 19:39:18