ac5474012 发表于 2017-4-23 08:02:28

【已解决】请问怎么返回一个文件夹中最新日期的文件的文件名?

本帖最后由 ac5474012 于 2017-4-24 15:52 编辑

#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Res_requestedExecutionLevel=None
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****


#include <FileConstants.au3>




Local $lujing1 = IniRead("config.ini", "config", "原路径", "NotFound");原位置
Local $lujing2 = IniRead("config.ini", "config", "目标路径", "NotFound");目标位置
Local $kuozhan= IniRead("config.ini", "config", "扩展名", "NotFound")

Local $hSearch = FileFindFirstFile($lujing1&"\"&$kuozhan)

; 检查搜索是否成功
If $hSearch = -1 Then
;~   MsgBox(4096, "错误", "没有文件/目录 匹配搜索")
    Exit
EndIf
$a = 0
While 1
    Local $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop

;~   MsgBox(4096, "找到的文件:", $sFile)
                                Local $sFileModifiedTime = FileGetTime($lujing1 & '\' & $sFile, 1, 1)
                                If $a = 0 Then $a = $sFileModifiedTime
                If Int($sFileModifiedTime) > Int($a) Then
                        $a = $sFileModifiedTime
                        $ming = $sFile
                EndIf

WEnd
;~ MsgBox(0,",",$ming)
FileCopy($lujing1&"\"&$ming, $lujing2&"\"&$ming)

; 关闭搜索句柄
FileClose($hSearch)
config.ini 信息:
原路径=I:\服务
目标路径=I:\服务\www
扩展名=*.*

229989799 发表于 2017-4-23 11:15:28

新手觉得,先返回所有文件的日期,对比最新日期的文件,提取文件名。。看看楼下有没有更好的办法

Alam 发表于 2017-4-23 11:37:21

每份文件有三个日期,要说明哪个时间吧.
正确做法当然是:
获取所有文件,然后循环比较时间,只留最新的.

kk_lee69 发表于 2017-4-23 14:23:16

回复 1# ac5474012

這句話怪怪的

请问怎么返回一个文件夹中最新日期的文件的文件名?

一個文件夾中..... 一個文件夾中 同樣的檔名 只會有一個 永遠是最新的一個...

最新日期的文件的文件名............最新的日期 指的是跟哪一天比呢??如果是 自己跟自己比...那又違反了在同個資料夾同檔名只會有一個....

ac5474012 发表于 2017-4-23 14:34:29

回复 2# 229989799

返回所有文件的函数忘记了

wo2china 发表于 2017-4-23 16:07:11

是否是下面这样
#include <FileConstants.au3>

Local $sDirPath = @ScriptDir & '\BackUp'
MsgBox(0, '', _FindFileLastModified($sDirPath))


Func _FindFileLastModified($sDirPath)
        Local $hSearch = FileFindFirstFile($sDirPath & '\*.*')
        If $hSearch == -1 Then
                MsgBox(0, '', StringFormat('文件夹%s不存在!', $sDirPath))
                Return SetError(1, 0, 0)
        EndIf

        Local $sFileName = '', $sFileLastModified = '', $sFileLastModifiedTime = ''

        While 1
                $sFileName = FileFindNextFile($hSearch)
                If @error Then ExitLoop
                Local $sFileModifiedTime = FileGetTime($sDirPath & '\' & $sFileName, $FT_MODIFIED, $FT_STRING)
                If Int($sFileModifiedTime) > Int($sFileLastModifiedTime) Then
                        $sFileLastModified = $sFileName
                        $sFileLastModifiedTime = $sFileModifiedTime
                EndIf
        WEnd
        FileClose($hSearch)
        Return $sFileLastModified
EndFunc   ;==>_FindFileLastModified

lin6051 发表于 2017-4-24 09:00:04

dir/od 参数 可以按时间排序
页: [1]
查看完整版本: 【已解决】请问怎么返回一个文件夹中最新日期的文件的文件名?