找回密码
 加入
搜索
查看: 2022|回复: 9

请教搜索文件和日期比较的问题

  [复制链接]
发表于 2010-1-7 20:06:49 | 显示全部楼层 |阅读模式
本帖最后由 zz999 于 2010-1-8 10:48 编辑

我想搜索某一指定文件下的指定文件类型!

如果是按年月日日期命名的进行日期比较,输出最大的那个日期.

ELSE
随机输出一个!

没有找到好用的搜索UDF
并且对日期比较不懂,特请教  AFAN大哥和顽固大哥以及各位大虾们!
发表于 2010-1-7 20:13:34 | 显示全部楼层
好像需要说得详细点,比如具体的文件名?还有在什么情况下随机输出?等
 楼主| 发表于 2010-1-7 20:18:50 | 显示全部楼层
回复 2# afan

搜索TXT文件
如果搜索到的TXT为   2010-01-07 这种日期格式的
就进行比较  这个是不是直接替换"-"字符,然后直接比较数值大小就行了吧?
否则就随机输出(MSGBOX)任意一个TXT文件名
发表于 2010-1-7 20:38:35 | 显示全部楼层
回复 3# zz999


    你的意思是如果文件夹里没有一个 "2010-01-07.txt" 这种日期格式的就随机输出一个?
有的话就输出日期最近的那个~?
但如果有日期格式的和别的格式的如何处理?还是如果只有一个日期格式的就输出它?
 楼主| 发表于 2010-1-7 20:42:54 | 显示全部楼层
回复 4# afan

只有一个日期格式
就是2010-01-07这种格式
如果有这种格式就比较然后输出最大的 那个
如果没有就随便输出一个txt文件名!
主要不懂怎么搜索
发表于 2010-1-7 22:55:46 | 显示全部楼层
本帖最后由 afan 于 2010-1-7 23:30 编辑

回复 5# zz999
#include <File.au3>

Local $path = 'C:\test'
Local $a = FileSearch($path)
If $a <> -1 Then
        MsgBox(64, '日期最近的文件', $a)
Else
        $a = _FileListToArray($path, '*.txt', 1)
        If @error Then Exit (MsgBox(48, '郁闷', '毛都没找到……'))
        If UBound($a) <= 2 Then MsgBox(48, '郁闷,总共就一个txt,没法随机', $a[1])
        If UBound($a) > 2 Then MsgBox(0, '随机文件', $a[Random(1, UBound($a) - 1, 1)])
EndIf

Func FileSearch($searchdir)
        $search = FileFindFirstFile($searchdir & "\*-*-*.txt")
        If $search = -1 Then Return -1 
        While 1
                $file = FileFindNextFile($search)
                If @error Then
                        FileClose($search)
                        Return $fmax
                EndIf
                $fmax = $file
        WEnd
EndFunc   ;==>FileSearch
不用比较,搜索是按文件名排序搜索的

评分

参与人数 1金钱 +30 收起 理由
zz999 + 30 谢谢!

查看全部评分

 楼主| 发表于 2010-1-7 23:13:33 | 显示全部楼层
谢谢  AFAN超版!    绝对的好心人!
发表于 2010-1-7 23:28:25 | 显示全部楼层
回复 7# zz999

也可以不循环搜索,直接用 _FileListToArray()
#include <File.au3>

Local $path = 'C:\test'
Local $a = _FileListToArray($path, '*-*-*.txt', 1)
If Not @error Then
        MsgBox(64, '日期最近的文件', $a[UBound($a) - 1])
Else
        $a = _FileListToArray($path, '*.txt', 1)
        If @error Then Exit (MsgBox(48, '郁闷', '毛都没找到……'))
        If UBound($a) <= 2 Then MsgBox(48, '郁闷,总共就一个txt,没法随机', $a[1])
        If UBound($a) > 2 Then MsgBox(0, '随机文件', $a[Random(1, UBound($a) - 1, 1)])
EndIf
发表于 2010-1-8 02:38:11 | 显示全部楼层
读取,文件的最后修改日期,或创建日期不好吗?
然后用冒泡的算法,顶出最大了.
 楼主| 发表于 2010-1-8 10:48:34 | 显示全部楼层
谢谢楼上的
因为不会用搜索!
再次感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 00:42 , Processed in 0.148633 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表