2013-11-02 99 views
0

我拥有下面的代码。它可能很混乱,但它一次只能处理一个文件,在这种情况下,就是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 

回答

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 
+0

这正是我一直在寻找。谢谢! – Daniel

相关问题