Что нового

[Файловая система] Имя файлов в формате даты и времени

Сообщения
95
Репутация
-1
Доброе время суток. Имеется куча zip архивов, и каждый архив переименован в формате (дд_мм_гг_ччммсс.zip). Требуется распаковать последний архив с именем в формате (дд_мм_гг_ччммсс.zip) в папку с программой. Т.е требуется найти архив с последней датой в названии допусти 22_07_2018_142123.zip и распаковать
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#include <File.au3>

MsgBox(0, '', __find_last_file(@ScriptDir & '\1'))

Func __find_last_file($sPath)

	Local $aResult[1][2]

	Local $aFiles = _FileListToArray($sPath, '*.zip')

	If $aFiles[0] > 0 Then

		For $i = 1 To $aFiles[0]

			Local $aDateTime = StringRegExp($aFiles[$i], '(\d{2})_(\d{2})_(\d{4})_(\d{6})', 3)

			If IsArray($aDateTime) Then

				$aResult[0][0] += 1

				ReDim $aResult[$aResult[0][0] + 1][2]

				$aResult[$aResult[0][0]][0] = Number($aDateTime[2] & $aDateTime[1] & $aDateTime[0] & $aDateTime[3])

				$aResult[$aResult[0][0]][1] = $sPath & '\' & $aFiles[$i]

			EndIf

		Next

	EndIf

	Local $iDate, $sFile

	For $i = 1 To $aResult[0][0]

		If ($aResult[$i][0] > $iDate) Then

			$iDate = $aResult[$i][0]

			$sFile = $aResult[$i][1]

		EndIf

	Next

	Return $sFile

EndFunc
 
Верх