程序主体是从论坛里面的帖子得来,只是我自己稍加改进,得到如下程序,获取某一文件夹下面的文件总数、各个文件的创建时间、访问时间、改写时间。如果要获取某一种类型的文件,只需要判断文件名的扩展名是否是你想要的就可以了,有兴趣的朋友可以自己实现一下。
CLEAR
#Define BYTE_2 256
#Define OF_READ 0
#Define OF_SHARE_DENY_NONE 64
#Define HFILE_ERROR -1
#Define dwordPlus 4294967296
Declare Integer GetFileTime In kernel32 ;
Integer hFile, ;
string @lpCreationTime, ;
string @lpLastAccessTime, ;
string @lpLastWriteTime
Declare Integer FileTimeToLocalFileTime In kernel32 ;
string lpFileTime, ;
string @lpLocalFileTime
Declare INTEGER FileTimeToSystemTime IN kernel32 ;
STRING FILETIME,;
STRING @SYSTEMTIME
Declare INTEGER OpenFile IN kernel32 ;
STRING lpFileName,;
STRING @lpReOpenBuff,;
INTEGER wStyle
Declare INTEGER CloseHandle IN kernel32 INTEGER hObject
Local lpCreationTime, lpLastAccessTime, lpLastWriteTime, lcFilename, hFile, FileTimeBuffer
lpCreationTime = space( 8 )
lpLastAccessTime = space( 8 )
lpLastWriteTime = space( 8 )
SET PATH TO SYS(5)+SYS(2003)+"\"
lpath=SYS(5)+SYS(2003)+"\"
filecount=ADIR(xx)
? "共有:"+ALLTRIM(STR(filecount))+"个文件"
FOR i=1 TO filecount
*!* lcFilename = getfile()
lcFilename=lpath+xx(i,1)
lpReOpenBuff = REPLI (Chr(0), 250)
hFile = OpenFile (lcFilename, @lpReOpenBuff, OF_SHARE_DENY_NONE)
= GetFileTime( hFile, @lpCreationTime, @lpLastAccessTime, @lpLastWriteTime )
= CloseHandle (hFile)
? "第"+ALLTRIM(STR(i))+"个文件: " + lcFilename
? "创建时间: ", transformFiletime(lpCreationTime)
? "访问时间: ", transformFiletime(lpLastAccessTime)
? "改写时间: ", transformFiletime(lpLastWriteTime)
? ""
NEXT
RETURN
*--------------------------------
Function transformFiletime
Lparameters LpFileTime
Local SystemTimeBuffer, FileTimeBuffer
FileTimeBuffer = space(8)
= FileTimeToLocalFileTime( LpFileTime, @FileTimeBuffer )
SystemTimeBuffer = SPACE(16)
fResult = FileTimeToSystemTime(FileTimeBuffer, @SystemTimeBuffer)
If fResult = 0
ldDateTime = {^1901/01/01 00:00:01}
Else
lnYear = ASC(SUBSTR(SystemTimeBuffer, 1, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 2, 1))* BYTE_2)
lnMonth = ASC(SUBSTR(SystemTimeBuffer, 3, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 4, 1))* BYTE_2)
lnDay = ASC(SUBSTR(SystemTimeBuffer, 7, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 8, 1))* BYTE_2)
lnHour = ASC(SUBSTR(SystemTimeBuffer, 9, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 10, 1))* BYTE_2)
lnMinute = ASC(SUBSTR(SystemTimeBuffer, 11, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 12, 1))* BYTE_2)
lnSecond = ASC(SUBSTR(SystemTimeBuffer, 13, 1)) + (ASC(SUBSTR(SystemTimeBuffer, 14, 1))* BYTE_2)
lcBuild = "^" + ALLTRIM(STR(lnYear)) ;
+ "/" + ALLTRIM(STR(lnMonth)) ;
+ "/" + ALLTRIM(STR(lnDay)) ;
+ " " + ALLTRIM(STR(lnHour)) ;
+ ":" + ALLTRIM(STR(lnMinute)) ;
+ ":" + ALLTRIM(STR(lnSecond))
ldDateTime = {&lcBuild}
Endif
Return ldDateTime
Endfunc
评论