Версия AutoIt: 3.3.8.1
Описание:
Есть текстовый файл вида
Где в строке Включено 1-го 08:29 8 Вася работа Проект лист2 - "8" - иднтификационный номер
Структура строк не меняется. Т.е. ИН всегда будет 4 подстрокой.
Необходимо записать в другой текстовый файл:
Время первого включения
Время выключения перед сменой номера
Сумма всех пауз до строки смены номера
Время включения после первой смены номера
Время выключения перед очередной сменой номера (либо последняя строка)
Сумма пауз после первой смены номера
Пример:
Примечания:
Пока я смог только убрать мусор из файла и посчитать общее время паузы.
Файл приобретает вид:
Сам код наработок:
Код на запись строк выключения закомментирован, посчитал, что это бесполезно в таком виде.
Описание:
Есть текстовый файл вида
Код:
Включено 1-го 08:29 8 Вася работа Проект лист2
Открыта карта D:\Files\Obu4enie\Ucheb2
Выключено 1-го 08:29 нестандартный выход
Включено 1-го 08:29 8 Вася работа Проект лист2
Открыта карта D:\Files\Obu4enie\Ucheb2
Пауза 7 мин с 08:55
Выключено 1-го 09:12 2320 нажатий мыши
Включено 1-го 09:15 11 Макс работа Проект лист2
Открыта карта D:\Files\Obu4enie\Ucheb2
Пауза 5 мин с 10:27
Пауза 6 мин с 10:59
Выключено 1-го 13:15 6811 нажатий мыши
Включено 1-го 14:20 11 Макс работа Проект лист4
Открыта карта D:\Number\Obuchenie\Ucheb4
Выключено 1-го 14:24 546 нажатий мыши
Включено 1-го 14:38 16 Антон работа Проект лист4
Открыта карта D:\Number\Obuchenie\Ucheb4
Пауза 18 мин с 14:30
Пауза 6 мин с 15:08
Пауза 6 мин с 15:14
Выключено 1-го 16:01 1646 нажатий мыши
Где в строке Включено 1-го 08:29 8 Вася работа Проект лист2 - "8" - иднтификационный номер
Структура строк не меняется. Т.е. ИН всегда будет 4 подстрокой.
Необходимо записать в другой текстовый файл:
Время первого включения
Время выключения перед сменой номера
Сумма всех пауз до строки смены номера
Время включения после первой смены номера
Время выключения перед очередной сменой номера (либо последняя строка)
Сумма пауз после первой смены номера
Пример:
Код:
Включено 1-го 08:29 8 Вася работа Проект лист2
Выключено 1-го 09:12 2320 нажатий мыши
Общее время паузы 7 мин
Включено 1-го 09:15 11 Макс работа Проект лист2
Выключено 1-го 14:24 546 нажатий мыши
Общее время паузы 11 мин
Включено 1-го 14:38 16 Антон работа Проект лист4
Выключено 1-го 16:01 1646 нажатий мыши
Общее время паузы 30 мин
Примечания:
Пока я смог только убрать мусор из файла и посчитать общее время паузы.
Файл приобретает вид:
Код:
Включено 1-го 08:29 8 Вася работа Проект лист2
Включено 1-го 08:29 8 Вася работа Проект лист2
Включено 1-го 09:15 11 Макс работа Проект лист2
Включено 1-го 14:20 11 Макс работа Проект лист4
Включено 1-го 14:38 16 Антон работа Проект лист4
Общее время паузы: 48 мин
Сам код наработок:
Код:
FileDelete("log.txt")
;~ Строки для поиска
$OneSe = 'Включено'
$TwoSe = 'Пауза'
$TriSe = 'Выключено'
;~ Исходный файл
$file = FileRead('text.txt')
$Line = StringSplit($file, @CRLF, 1)
For $i = 1 To $Line[0] Step +1
;~ Все включения в лог файл
If StringInStr($Line[$i], $OneSe) Then
FileWriteLine("log.txt", $Line[$i])
EndIf
;~ Все паузы во временный файл
If StringInStr($Line[$i], $TwoSe) Then
FileWriteLine("temp.txt", $Line[$i])
EndIf
;~ Все выключения в лог файл
;~ If StringInStr($Line[$i], $TriSe) Then
;~ FileWriteLine("log.txt", $Line[$i])
;~ EndIf
Next
;~ Считаем общее время паузы из временного файла
$vTFile = FileOpen("temp.txt")
$vTmp = FileRead($vTFile)
$aTmp = StringRegExp($vTmp, '\h(\d+?)\h', 3)
If @error Then Exit 13
$vTmp = 0
For $i = 0 To UBound($aTmp) - 1
$vTmp += $aTmp[$i]
Next
$aTmp = 0
;~ Записываем паузы в лог файл
FileWriteLine("log.txt","")
FileWriteLine("log.txt",'Общее время паузы: ' & $vTmp & ' мин')
FileDelete("temp.txt")
Код на запись строк выключения закомментирован, посчитал, что это бесполезно в таком виде.