Code:
Dim fs
Dim fInput
Dim fOutput
Dim sInputFile As String
Dim sOutputFile As String
Dim sOutputString As String
Dim aArray
sInputFile = "c:\test\dl.txt"
sOutputFile = "c:\test\dl_output.txt"
Set fs = CreateObject("scripting.filesystemobject")
Set fInput = fs.opentextfile(sInputFile)
Set fOutput = fs.createtextfile(sOutputFile, True)
sOutputString = "AID~Date~LC~IQ~Lat1~Lon1~Lat2~Lon2~Nb mes>=120dB~Best Level~Pass Duration~NOPC~Calcul Freq~Altitude~A~B~C"
fOutput.writeline sOutputString
'***** INPUT *****
'104857 Date : 17.02.14 00:10:13 LC : 1 IQ : 50
'Lat1 : 51.583N Lon1 : 112.324W Lat2 : 51.583N Lon2 : 112.324W
'Nb mes : 006 Nb mes>-120dB : 000 Best level : -126 dB
'Pass duration : 360s NOPC : 3
'Calcul freq : 401 677423.9 Hz Altitude : 947 m
'69 198 12
'***** OUTPUT *****
'AID Date LC IQ Lat1 Lon1 Lat2 Lon2 Nb Mes Nbmes>-120db Best Level Pass duration NOPC Calcul freq Altitude A B C
'104587 17.02.14 00:10:13 1 50 51.583N 112.324W 51.583N 112.324W 006 000 -126 db 360s 3 401 677423.9 hz 947 m 69 198 12
Do While fInput.atendofstream <> True
sline = fInput.readline
If InStr(sline, "Date :") > 0 Then
sOutputString = Trim(Left(sline, InStr(sline, "Date") - 1)) & "~" 'This Gets the AID
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, "Date : ") + 6, 18)) & "~" 'This gets the Date
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, "LC : ") + 4, InStr(sline, "IQ : ") - (InStr(sline, "LC : ") + 4))) & "~" 'This gets the IQ value if it's longer than one digit
sOutputString = sOutputString & Trim(Right(sline, Len(Trim(sline)) - (InStrRev(Trim(sline), ":") + 1))) & "~" 'This gets the IQ value
For i = 1 To 5
sline = fInput.readline
If i = 1 Then
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, ":") + 1, InStr(sline, "Lon1") - 1 - InStr(sline, ":"))) & "~" 'This gets Lat1
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, "Lon1") + 7, (InStr(sline, "Lat2") - 1) - (InStr(sline, "Lon1") + 6))) & "~" 'This gets Lon1
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, "Lat2") + 7, (InStr(sline, "Lon2") - 1) - (InStr(sline, "Lat2") + 6))) & "~" 'This gets Lat2
sOutputString = sOutputString & Right(Trim(sline), Len(Trim(sline)) - (InStrRev(Trim(sline), ":") + 1)) & "~" 'This gets Lon2
ElseIf i = 2 Then
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, ":") + 1, (InStr(sline, "nb mes>") - 1) - (InStr(sline, ":") + 1))) & "~" 'This gets NB Mes
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, "nb mes>") + 15, (InStr(sline, "Best") - 1) - (InStr(sline, "nb mes>") + 15))) & "~" 'This gets NB Mes>=120dB
sOutputString = sOutputString & Trim(Right(Trim(sline), Len(Trim(sline)) - (InStrRev(Trim(sline), ":") + 1))) & "~" 'This gets Best Level
ElseIf i = 3 Then
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, ":") + 1, (InStr(sline, "NOPC") - 1) - (InStr(sline, ":") + 1))) & "~" 'This gets Pass Duration
sOutputString = sOutputString & Right(Trim(sline), Len(Trim(sline)) - (InStrRev(Trim(sline), ":") + 1)) & "~" 'This gets NOPC
ElseIf i = 4 Then
sOutputString = sOutputString & Trim(Mid(sline, InStr(sline, ":") + 1, (InStr(sline, "Altit") - 1) - (InStr(sline, ":") + 1))) & "~" 'This gets Calcul Freq
sOutputString = sOutputString & Right(Trim(sline), Len(Trim(sline)) - (InStrRev(Trim(sline), ":") + 1)) & "~" 'This gets Altitude
ElseIf i = 5 Then
aArray = Split(sline, " ")
For j = 0 To UBound(aArray)
If Len(Trim(aArray(j))) > 0 Then
sOutputString = sOutputString & aArray(j) & "~"
End If
Next j
End If
Next i
sOutputString = left(sOutputString, len(sOutputString) - 1) 'gets rid of right hand tilde
Debug.Print sOutputString
fOutput.writeline sOutputString
End If
Loop
fInput.Close
fOutput.Close
Set fs = Nothing