Windows批处理命令忽略一些文件行?

时间:2012-02-02 14:32:22

标签: windows command-line batch-file cvs

我正在将cvs diff的输出重定向到log.txt文件。

C:\Temp> cvs diff -b -B -r 1.5 -r 1.6 Project\src\Sample.java > log.txt

执行上述命令时生成的log.txt文件内容如下:

Index: project/src/Sample.java
===================================================================
RCS file: \repobase/src/Sample.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -r1.5 -r1.6
78a79,82
>       public java.lang.Class getJavaClass() {
>           return Sample.class;
>       }
> 
92c96
<           return Demo.getparentClass(this.getClass());
---
>           return MyClass.clazz;

此文件的所有以<>开头的行都不是必需的。我想忽略所有这些行只是为了将最小的休息推入log.txt文件。我怎么能通过Windows命令行执行此操作?

1 个答案:

答案 0 :(得分:1)

也许cvs diff --brief选项会给你你想要的东西。

如果没有,那么你可以将diff输出传递给FINDSDTR并让它过滤行

cvs diff -b -B -r 1.5 -r 1.6 Project\src\Sample.java | findstr /vbl "< >" > log.txt

/ v选项表示打印不包含任何字符串的行

/ b选项表示匹配从每行开头的搜索字符串

/ l表示文字搜索字符串(与正则表达式相对)

搜索字符串在每个空格处拆分,因此“&lt;&gt;”实际上是2个搜索字符串。

有关FINDSTR的更多帮助,请使用“FINDSTR /?”。

有关其他帮助,请参阅What are the undocumented features and limitations of the Windows FINDSTR command?