Автор Тема: Поиск самого свежего лог файла  (Прочитано 4250 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Serje [?]

  • Новичок
  • *
  • Сообщений: 7
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Для простой ситуации - нужно найти самый последний лог файл в папке с логами. Функция очень простая, но кому-то может и пригодиться

Код: AutoIt [Выделить]
#cs
   @error
   1 = Log directory does not exist
   2 = Function FileGetTime() returns error, @extended = @error for FileGetTime()
#ce


#include <File.au3>

Func _FindLatestLogFile($log_folder_path)
   Local $log_file_array[1], $log_file_date_array[1]
   Local $a, $latest_log_number, $latest_log_date
   Local $error_text

   $log_file_date_array[0] = 0

   $latest_log_date = "00000000000000"

   If Not(StringRight($log_folder_path, 1) == "\") Then
      $log_folder_path = $log_folder_path & "\"
   EndIf

   If FileExists($log_folder_path) Then
      $log_file_array = _FileListToArray($log_folder_path)
      If $log_file_array = False Then
         Switch @error
         Case 1
            $error_text = "Folder not found or invalid"
         Case 2
            $error_text = "Invalid $sFilter"
         Case 3
            $error_text = "Invalid $iFlag"
         Case 4
            $error_text = "No File(s) Found"
         Case Else
            $error_text = "Unknown error"
         EndSwitch
         MsgBox(0x10, "Alarm!", "Function FileGetTime() returns error: " & $error_text)
         SetError(2, @error)
         Return False
      Else
         For $a = 1 To UBound($log_file_array) - 1
            ReDim $log_file_date_array[$a + 1]
            $log_file_date_array[$a] = FileGetTime($log_folder_path & $log_file_array[$a], 0, 1)
            $log_file_date_array[0] = $a
         Next
      EndIf
   Else
      Switch MsgBox(0x15, "Alarm!", "Log directory does not exist!")
      Case 2
         SetError(1)
         Return False
      Case 4
         _FindLatestLogFile($log_folder_path)
      EndSwitch
   EndIf

   For $a = 1 To UBound($log_file_date_array) - 1
      If $log_file_date_array[$a] > $latest_log_date Then
         $latest_log_number = $a
         $latest_log_date = $log_file_date_array[$a]
      EndIf
   Next

   Return $log_file_array[$latest_log_number]

EndFunc


Русское сообщество AutoIt

Поиск самого свежего лог файла
« Отправлен: Июль 16, 2014, 15:22:32 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7799
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Поиск самого свежего лог файла
« Ответ #1, Отправлен: Июль 16, 2014, 15:58:15 »
Это можно сделать проще:

Код: AutoIt [Выделить]
#include <File.au3>

$sFile = _FindLatestFile(@DesktopDir, 'log')
MsgBox(64, @error, $sFile)

Func _FindLatestFile($sPath, $sExt = '*')
    If Not FileExists($sPath) Then
        Return SetError(1)
    EndIf
   
    Local $iDate = 0, $sLatest_File
    Local $aFiles = _FileListToArray($sPath, '*.' & $sExt)
   
    For $i = 1 To UBound($aFiles)-1
        $iTmpDate = FileGetTime($sPath & '\' & $aFiles[$i], 0, 1)
       
        If $iTmpDate > $iDate Then
            $iDate = $iTmpDate
            $sLatest_File = $aFiles[$i]
        EndIf
    Next
   
   Return SetError(($sLatest_File = '' ? 2 : 0), 0, $sLatest_File)
EndFunc



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн Serje [?]

  • Новичок
  • *
  • Сообщений: 7

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Поиск самого свежего лог файла
« Ответ #2, Отправлен: Июль 16, 2014, 16:20:19 »
Не спорю )

Оффлайн alexnasa [?]

  • Новичок
  • *
  • Сообщений: 45
  • Репутация: 0
    • Награды
Re: Поиск самого свежего лог файла
« Ответ #3, Отправлен: Февраль 03, 2016, 11:09:31 »
 Поиск самой "юной" папки
http://autoit-script.ru/index.php?topic=11505.msg75504#msg75504

Русское сообщество AutoIt

Re: Поиск самого свежего лог файла
« Ответ #3 Отправлен: Февраль 03, 2016, 11:09:31 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
15 Ответов
13042 Просмотров
Последний ответ Ноябрь 08, 2009, 15:47:54
от CreatoR
2 Ответов
3227 Просмотров
Последний ответ Апрель 19, 2010, 21:29:53
от VAR
16 Ответов
4727 Просмотров
Последний ответ Август 17, 2011, 11:31:24
от madmasles
2 Ответов
2635 Просмотров
Последний ответ Сентябрь 30, 2011, 02:23:59
от La2Angel
16 Ответов
4752 Просмотров
Последний ответ Июль 17, 2012, 21:43:31
от CreatoR
3 Ответов
2163 Просмотров
Последний ответ Декабрь 03, 2012, 21:58:19
от HolyWay
4 Ответов
2852 Просмотров
Последний ответ Сентябрь 26, 2013, 22:22:14
от Yashied
5 Ответов
2223 Просмотров
Последний ответ Октябрь 27, 2013, 23:10:59
от Garrett
1 Ответов
1002 Просмотров
Последний ответ Декабрь 23, 2013, 08:03:09
от madmasles
1 Ответов
360 Просмотров
Последний ответ Май 31, 2016, 23:13:00
от InnI