2015-09-08 39 views
0

我正在使用findstr在某個文件中搜索字符串,並將搜索結果重定向到另一個txt文件,但需要省略搜索結果中添加的文件名。如何避免在'findstr'結果中添加文件名?

我的批處理文件: - findstr /s "TEST" subfolder/test.dat > output.txt

和output.txt中與文件名TEST.DAT結果(我需要刪除): -

子文件夾/ TEST.DAT: 2014-04-15; TEST TECHNOLOGY LTD

同類問題已被要求here。但在我的情況下,我沒有使用任何通配符。請幫忙。

+0

我無法複製。你可以在不同的文件上重現它,或者在命令提示符控制檯中運行它嗎? – wOxxOm

+0

@wOxxOm我試過兩種方法,但結果相同。 – Yash

+1

那麼,除非你有'/ s'開關來遞歸查找文件,否則AFAIK是不可能的。 – wOxxOm

回答

1
  1. Parse的遞歸dir輸出:

    >output.txt (
        for /f "eol=* delims=" %%a in ('dir /s /b "subfolder\test.dat"') do (
         findstr /c:"TEST" "%%a" 
        ) 
    ) 
    
    • eol=*用於正確解析的文件夾與;其由視爲註釋for /f
    • delims=(空)表示換行符是用於分隔輸出,所以線路完全採用
    • /c:用於指示文字搜索字符串,以便它可以包含空格
  2. 另外,您可以剝去遞歸FINDSTR輸出文件名:

    >output.txt (
        for /f "delims=: tokens=1*" %%a in (
         'findstr /s /c:"TEST" "subfolder\test.dat"' 
        ) do echo.%%b 
    ) 
    

    如果要指定一個驅動器限定符使用tokens=2*

0

還有一個辦法就是管與TYPE

如果只有一個文件:

type "subfolder/test.dat" |Findstr "TEST" > output.txt 

S開關子文件夾中搜索,所以如果該文件是更多:

for /r "subfolder" %%a in (*.dat) do type %%~fa|Findstr "TEST" >> output.txt 
相關問題