【问题标题】:Batch string search iterating over all files in a folder批量字符串搜索迭代文件夹中的所有文件
【发布时间】:2013-11-02 19:51:08
【问题描述】:

我有下面的代码。它可能很混乱,但一次只能处理一个文件,在本例中为 test1.OUT。我要做的是尝试使用某种通配符名称而不是 test1.OUT 并在文件夹中的所有 .OUT 文件上迭代批处理文件。

我遇到的另一个问题是 output3.txt 文件每次都会被覆盖。是否可以让批处理文件的每次运行都导出信息并将其添加到 output3.txt 而不是覆盖以前的信息?

@echo off
setlocal EnableDelayedExpansion

rem Assemble the list of line numbers
set numbers=
for /F "delims=:" %%a in ('findstr /I /N /C:"Number of Error Taps:  0" test1.OUT') do (
    set /A before=%%a-6, after=%%a+1
    set "numbers=!numbers!!before!: !after!: "
)
rem Search for the lines
(for /F "tokens=1* delims=:" %%a in ('findstr /N "^" test1.OUT ^| findstr /B      "%numbers%"') do echo %%b) > output.txt

set wildcard=%%G
set numbers=
for /F "delims=:" %%a in ('findstr /I /N /C:"Site Number:" test1.OUT') do (
    set /A before=%%a-1, after=%%a+1
    set "numbers=!numbers!!before!: !after!: "
)
rem Search for the lines
(for /F "tokens=1* delims=:" %%a in ('findstr /N "^" test1.OUT ^| findstr /B         "%numbers%"') do echo %%b) > output1.txt


set numbers=
for /F "delims=:" %%a in ('findstr /I /N /C:"Number of Error Taps:  0" test1.OUT') do (
    set /A before=%%a-50, after=%%a+1
    set "numbers=!numbers!!before!: !after!: "
)
rem Search for the lines
(for /F "tokens=1* delims=:" %%a in ('findstr /N "^" test1.OUT ^| findstr /B   "%numbers%"') do echo %%b) > output2.txt

copy output1.txt+output.txt+output2.txt output3.txt
@pause

【问题讨论】:

    标签: windows batch-file wildcard


    【解决方案1】:

    示例代码:

    @echo off &setlocal EnableDelayedExpansion
    
    for %%a in (*.out) do call:process "%%~a"
    goto:eof
    
    :process
    set numbers=
    for /F "delims=:" %%a in ('findstr /I /N /C:"Number of Error Taps:  0" "%~1"') do (
        set /A before=%%a-6, after=%%a+1
        set "numbers=!numbers!!before!: !after!: "
    )
    
    (for /F "tokens=1* delims=:" %%a in ('findstr /N "^"  "%~1" ^| findstr /B "%numbers%"') do echo %%b)> "%~n1.txt"
    
    set numbers=
    for /F "delims=:" %%a in ('findstr /I /N /C:"Site Number:"  "%~1"') do (
        set /A before=%%a-1, after=%%a+1
        set "numbers=!numbers!!before!: !after!: "
    )
    
    (for /F "tokens=1* delims=:" %%a in ('findstr /N "^"  "%~1" ^| findstr /B "%numbers%"') do echo %%b)> "%~n11.txt"
    
    set numbers=
    for /F "delims=:" %%a in ('findstr /I /N /C:"Number of Error Taps:  0" "%~1"') do (
        set /A before=%%a-50, after=%%a+1
        set "numbers=!numbers!!before!: !after!: "
    )
    
    (for /F "tokens=1* delims=:" %%a in ('findstr /N "^"  "%~1" ^| findstr /B "%numbers%"') do echo %%b)> "%~n12.txt"
    
    copy  "%~n11.txt" + "%~n1.txt" +  "%~n12.txt" = "%~n13.txt"
    
    exit /b
    

    【讨论】:

    • 这正是我想要的。谢谢!
    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多