我成功设法在findstr
的长文件列表中搜索字符串。我正在将findstr
的输出重定向到不同的文本文件,但是我需要摆脱输出行的起始部分,它也包含源文件的引用。基数是下面的例子
echo testtest > testing.txt
findstr 'test' *.txt > output.txt //output is 'testing.txt:testtest'
我需要做这样的事情
echo testtest > testing.txt
findstr 'test' *.txt | *something* > output.txt //output is 'testtest'
CAVEAT:
我只能使用标准CMD命令,我无法在目标机器上安装新软件
答案 0 :(得分:4)
这是解决Ansgar Wiechers在his answer中确定的CR / LF问题的解决方案。
我使用FOR循环迭代所有文件并在每个单独的文件上运行FINDSTR。我在每个文件之间回显一个空行。最后,我再使用一个FINDSTR删除任何不需要的空行。
@echo off
>"output.txt" (
for %%F in (*.txt) do (
findstr "test" "%%F"
(echo()
)
)
findstr . "output.txt" >"output.txt.new"
move /y "output.txt.new" "output.txt" >nul
type output.txt
答案 1 :(得分:0)
您应该使用PowerShell(powershell.exe
)来开发所需的脚本。
命令行提供的文档非常有用:
PS > help about
如果您需要更多:Is there a Language Reference Manual for PowerShell?
答案 2 :(得分:-1)
在Linux系统上,您可以像以下命令一样使用awk
:
cat output.txt | awk 'match($0,":"){print substr($0,RSTART+1)}'