Search code examples
batch-filecmdfindstr

FINDSTR multiple search in one single output line (Revision 2)


This is version 2 of the FINDSTR function for searching multiple key words and output them into one single line per file

File#1 - CW_TESTDP3_9_13_0925.txt contains below

User: "DanMac"  
Date: "Wednesday April 05 2017"      Part#: "CW_EVALTCAPDP3_9_13_37"  
Time: "09:25:57 AM"         Operator: "CALVIN"

Unit; Voltage; Power; Host; Grb1; grn2;    
1; 220; 390; 24; 2; 5     
2; 234; 340; 64; 11; 15     
3; 10; 904; 2443; 211; 115     
4; 320; 390; 24; 2; 5     

Total_Test_time : 35minutes 40seconds

File#2 - BW_ENGDP3_8_13_232345.txt contains below

User: "Jerry"  
Date: "Tuesday April 04 2017"      Part#: "BW_EENGDP3_9_13_37"  
Time: "10:15:57 AM"         Operator: "CALVIN"

Unit; Voltage; Power; Host; Grb1; grn2;    
1; 220; 390; 24; 2; 5     
2; 234; 340; 64; 11; 15    
3; 10; 904; 2443; 211; 115     
4; 320; 390; 24; 2; 5     
5; 24; 40; 4; 511; 154     
6; 103; 4; 2; 21; 125     
7; 345; 90; 4; 122; 53     

Total_Test_time : 45minutes 4seconds    

Expected output

c:\temp\CW_TESTDP3_9_13_0925.txt:User: "DanMac"; Date: "Wednesday April 05 2017"; Time: "09:25:57 AM"; Total_Test_time : 35minutes 40seconds
c:\temp\BW_ENGDP3_8_13_232345.txt:User: "Jerry"; Date: "Tuesday April 04 2017"; Time: "10:15:57 AM"; Total_Test_time : 45minutes 4seconds

Solution

  • @echo off
    setlocal EnableDelayedExpansion
    
    cd c:\temp
    for /F "tokens=1* delims=:" %%a in ('findstr /I "User Date Time" *.txt') do (
       for /F tokens^=1-2delims^=^" %%c in ("%%b") do (
          set "file[%%a]=!file[%%a]!%%c"%%d"; "
       )
    )
    for /F "tokens=2 delims=[]" %%a in ('set file[') do echo %%~Fa:!file[%%a]:~0,-4!