test5.txt
Note: in the example supplied, some of the filenumbers don't match
e.g.
03/31/09 07:03:02 UPLOAD (C:\TEMP\P33108245_TRF_31Mar2009\P33108205_TRF_31Mar2009.zip)
03/20/09 10:31:52 UPLOAD C:\TEMP\UPLOAD\FILE1_19Mar2009.zip)
03/20/09 10:31:54 DOWNLOAD FILE1_19Mar2009.zip to C:\TEMP\DOWNLOAD\FILE1_19Mar2009.zip
03/20/09 10:31:52 UPLOAD C:\TEMP\UPLOAD\FILE2_19Mar2009.zip)
03/20/09 10:31:54 DOWNLOAD FILE2_19Mar2009.zip to C:\TEMP\DOWNLOAD\FILE2_19Mar2009.zip
03/21/09 11:20:52 UPLOAD C:\TEMP\UPLOAD\FILE3_20Mar2009.zip)
03/21/09 11:21:54 DOWNLOAD FILE3_20Mar2009.zip to C:\TEMP\DOWNLOAD\FILE3_20Mar2009.zip
03/21/09 12:31:52 UPLOAD C:\TEMP\UPLOAD\FILE4_20Mar2009.zip)
03/21/09 12:31:54 DOWNLOAD FILE4_20Mar2009.zip to C:\TEMP\DOWNLOAD\FILE4_20Mar2009.zip
03/31/09 14:00:28 UPLOAD (C:\TEMP\P2207247 DATA TRANSFER\P2207247_TRF_31Mar2009.zip)
03/31/09 14:00:28 DOWNLOAD P2207247_TRF_31Mar2009.zip to C:\TEMP\P2207247_TRF_31Mar2009.zip
03/31/09 07:03:02 UPLOAD (C:\TEMP\P33108245_TRF_31Mar2009\P33108205_TRF_31Mar2009.zip)
03/31/09 07:03:02 DOWNLOAD P33108245_TRF_31Mar2009.zip to C:\TEMP\P33108205_TRF_31Mar2009.zip
03/31/09 15:00:28 UPLOAD (C:\TEMP\P2107244 DATA TRANSFER\PP2107244_TRF_31Mar2009.zip)
03/31/09 15:00:28 DOWNLOAD P2107244_TRF_31Mar2009.zip to C:\TEMP\PP2107244_TRF_31Mar2009.zip
03/31/09 20:03:02 UPLOAD (C:\TEMP\P3106230_TRF_31Mar2009\P3106230_TRF_31Mar2009.zip)
03/31/09 20:03:02 DOWNLOAD P3106230_TRF_31Mar2009.zip to C:\TEMP\P3106230_TRF_31Mar2009.zip
03/31/09 14:00:30 UPLOAD (C:\TEMP\P2207247 DATA TRANSFER\119073399 message.txt)(This line can be ignored)
03/31/09 22:00:28 UPLOAD (C:\TEMP\P2207247 DATA TRANSFER\P2207247_TRF_31Mar2009.zip)
03/31/09 22:00:28 DOWNLOAD P2207247_TRF_31Mar2009.zip to C:\TEMP\P2207247_TRF_31Mar2009.zip
03/31/09 22:03:02 UPLOAD (C:\TEMP\P3106230_TRF_31Mar2009\P3106230_TRF_31Mar2009.zip)
03/31/09 22:03:02 DOWNLOAD P3106230_TRF_31Mar2009.zip to C:\TEMP\P3106230_TRF_31Mar2009.zip
03/31/09 23:03:02 UPLOAD (C:\TEMP\P33108245_TRF_31Mar2009\P33108205_TRF_31Mar2009.zip)
03/31/09 23:03:02 DOWNLOAD P33108245_TRF_31Mar2009.zip to C:\TEMP\P33108205_TRF_31Mar2009.zip
Batch file
@echo off
setlocal enabledelayedexpansion
set filename=test5.txt
REM pass 1 - determine latest date
echo Examining file - determining latest date
set maxdatenum=0
set lastdate=
for /f "delims=" %%L in ( ' type "%filename%" ' ) do (
set thisline=%%L
set datestamp=!thisline:~0,8!
set dateD=!datestamp:~0,2!
set dateM=!datestamp:~3,2!
set dateY=20!datestamp:~6,2!
set datenum=!dateY!!dateM!!dateD!
if !datenum! GTR !maxdatenum! (
set maxdatenum=!datenum!
set lastdate=!datestamp!
echo Found date : !datestamp!
)
)
echo Latest date found : %lastdate%
REM filenames cannot have / character
set filenamedate=%lastdate:/=-%
REM pass 2 extract latest date's lines
REM containing DOWNLOAD because only pairs have this line
set alreadydone=
REM The filename transferred is token 6
for /f "tokens=1-26 delims= " %%L in ( ' type "%filename%" ^| find "%lastdate%" ^| find "DOWNLOAD"' ) do (
set filename=%%~nxQ
REM Echo Found filename : !filename!
REM Find number part within transferred filename
REM Delimiter is underscore character
for /f "delims=_" %%A in ("!filename!") do (
set number=%%A
echo !alreadydone! | find ",!number!,">nul || (
set alreadydone=,!number!,!alreadydone!
echo.
REM Echo File number part : !number!
Set Outfile=%filenamedate%-!number!.txt
Echo Creating file : !outfile!
if exist "!outfile!.tmp" del "!outfile!.tmp"
if exist "!outfile!" del "!outfile!"
REM Examine entire log file and extract lines containing current
REM transferred file number
REM group each filenumber pair together, ignore lines containing message.txt
REM Write to temp file first
for /f "delims=" %%B in ( ' type "%filename%" ^| find "%lastdate%" ^| find "!number!" ^| find /v "message.txt"' ) do (
Echo %%B>>"!outfile!.tmp"
)
REM Only take latest pair for each file number
REM Count lines in output
set numlines=0&for /f "delims=" %%C in ( ' type "!outfile!.tmp"' ) do set /a numlines+=1
REM Subtract 2, this gives the first line to take
set /a startline=!numlines!-2
REM Transfer last 2 lines of tmp file to
REM real output file
set line=1
for /f "delims=" %%C in ( ' type "!outfile!.tmp"' ) do (
if !line! GTR !startline! (
echo %%C>>!outfile!
echo %%C
)
set /a line+=1
)
del "!outfile!.tmp"
)
)
)
Echo.
Output
Examining file - determining latest date
Found date : 03/20/09
Found date : 03/21/09
Found date : 03/31/09
Latest date found : 03/31/09
Creating file : 03-31-09-P2207247.txt
03/31/09 22:00:28 UPLOAD (C:\TEMP\P2207247 DATA TRANSFER\P2207247_TRF_31Mar2009.zip)
03/31/09 22:00:28 DOWNLOAD P2207247_TRF_31Mar2009.zip to C:\TEMP\P2207247_TRF_31Mar2009.zip
Creating file : 03-31-09-P33108205.txt
03/31/09 23:03:02 UPLOAD (C:\TEMP\P33108245_TRF_31Mar2009\P33108205_TRF_31Mar2009.zip)
03/31/09 23:03:02 DOWNLOAD P33108245_TRF_31Mar2009.zip to C:\TEMP\P33108205_TRF_31Mar2009.zip
Creating file : 03-31-09-PP2107244.txt
03/31/09 15:00:28 UPLOAD (C:\TEMP\P2107244 DATA TRANSFER\PP2107244_TRF_31Mar2009.zip)
03/31/09 15:00:28 DOWNLOAD P2107244_TRF_31Mar2009.zip to C:\TEMP\PP2107244_TRF_31Mar2009.zip
Creating file : 03-31-09-P3106230.txt
03/31/09 22:03:02 UPLOAD (C:\TEMP\P3106230_TRF_31Mar2009\P3106230_TRF_31Mar2009.zip)
03/31/09 22:03:02 DOWNLOAD P3106230_TRF_31Mar2009.zip to C:\TEMP\P3106230_TRF_31Mar2009.zip