如何使用批处理文件将多个findstr命令的所有结果重定向到同一文件

时间:2018-03-20 09:30:40

标签: batch-file

您好我正在使用findstr命令根据字符串过滤文件并将该输出重定向到单独的文件。

findstr /C:"C=EODRevaluationProcess  Temp table:TMP_EOD_REVAL_DATA" "C:\Users\Desktop\abc.txt" > C:\Users\Desktop\xyz.txt
pause
findstr /C:"sendSPPJMSMessage><Finished publishing [0] messages" "C:\Users\Desktop\abc.txt" > "C:\Users\Desktop\xyz.txt" 
pause
findstr /C:"POS_HOURLY_DATA : actualTable : POS_HOURLY_DATA_" "C:\Users\Desktop\abc.txt" > "C:\Users\Desktop\xyz.txt" 

我希望所有过滤后的行都保存在同一个文件xyz中。 但只有第一个findstr命令的输出在xyz中保存。

任何人都可以提出任何想法

谢谢。

2 个答案:

答案 0 :(得分:1)

您正在使用>运算符将输出重定向到文件,如果文件不存在,则会创建该文件并将其内容替换为输出。

如果要附加到文件,而不是替换其内容,可以使用>>运算符。

答案 1 :(得分:0)

没有理由对同一个文件运行FindStr三次。将所有搜索字符串放在一个命令中也会阻止您的覆盖问题。

@FindStr /I^
 /C:"some string"^
 /C:"another string"^
 /C:"and a bigger string"^
 "source.txt" > "output.txt"

您注意到我使用插入符号^来逃避换行符,以便您的字符串更易于维护(每个字符串都属于他们自己的行) < / p>