En ocasiones necesitamos que el programa nos devuelva el fichero mas actual de todos. En mi caso para seleccionar el ultimo backup de un sistema, descomprimirlo y ponerlo disponible.

La función que he utilizado es la siguiente:

C:
  1. Func _GetNewestFileName($sPath, $iMode=0) ;$iMode: 0 = Modificado, 1 = Creado, 2 = Accedido
  2.     Local $sNewestFile = ""
  3.     Local $sNextFile, $iNewsetFileSize, $iCurrentFileSize
  4.     Local $hSearch = FileFindFirstFile($sPath & "\" & $Mask)
  5.     If $hSearch = -1 Then Return SetError(1, 0, -1)
  6.    
  7.     While 1
  8.         $sNextFile = FileFindNextFile($hSearch)
  9.         If @error Then ExitLoop
  10.         If StringInStr(FileGetAttrib($sPath & "\" & $sNextFile), "D") Then ContinueLoop
  11.         $iNewsetFileSize = FileGetTime($sPath & "\" & $sNewestFile, $iMode, 1)
  12.         $iCurrentFileSize = FileGetTime($sPath & "\" & $sNextFile, $iMode, 1)
  13.         If $sNewestFile = "" Or $iCurrentFileSize> $iNewsetFileSize Then $sNewestFile = $sNextFile
  14.     WEnd
  15.    
  16.     FileClose($hSearch)
  17.     Return $sNewestFile
  18. EndFunc

Para llamar a la función utilizo:

C:
  1. $Mask="HOSPSURG_*.*" ;la mascara que voy a utilizar
  2. $NewsetFileName = _GetNewestFileName("\\vivaldi\Backup_HPS$\respaldo\", 0)
  3. MsgBox(64, "Resultado", "Nombre de archivo mas actual: " & $NewsetFileName)


Posts anterior y posterior:


Posts Relacionados: