您的位置:程序门 -> 其他开发语言 -> office使用



如何在pb中取得文件修改时间


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何在pb中取得文件修改时间
发表于:2007-12-10 14:24:27 楼主
在windows环境中,需要定期自动删除指定路径的过期文件,请问要如何才能取得所有过期文件呢?谢谢!
发表于:2007-12-10 14:55:081楼 得分:0
帮顶
发表于:2007-12-10 18:16:322楼 得分:0
调用win32   api   :getfiletime  
发表于:2007-12-10 18:17:373楼 得分:0
你别告诉我没法调.
发表于:2007-12-11 14:01:444楼 得分:0
谢谢楼上的。
但问题是,在指定路径下有未知个数的文件,我要如何取得文件个数和每个文件名呢?
发表于:2007-12-11 16:18:555楼 得分:0
同样道理使用win32   api   查找:

  findfirstfile
  findnextfile

具体使用请参考下msdn或网络吧!可以搜一大把。
 
发表于:2007-12-14 09:00:336楼 得分:0
问题已经解决,谢谢!
现在把我的代码共享给大家:

long                 ll_filecount
long                 ll_cnt
long                 ll_filehandle
date                 ldt_today_date
date                 ldt_temp_file
string ls_file
string ls_full_path
string             ls_directorya
string             ls_filename
string             ls_filename1
datetime         ldt_today
datetime         ldt_filedatetime
//get   file   time
long       lul_date
long       lul_time      
int         lui_year
int         lui_month
int         lui_day
int         lui_hour
int         lui_minute
int         lui_second
s_win32_find_data   ss_file

if   fc_isnull(trim(as_file_path),   "")   =   ""   then
return   0
end   if

ls_directorya   =   trim(as_file_path)
if   right(ls_directorya,   1)   =   '\'   then
ls_file   =   ls_directorya   +   '*.*'
else
ls_file   =   ls_directorya   +   '\*.*'
end   if

if   not   lb_files.dirlist(ls_file,   0+1+2+16+32)   then
return   -1
end   if

ll_filecount   =   lb_files.totalitems()
for   ll_cnt   =   1   to   ll_filecount
ls_file   =   lb_files.text(ll_cnt)

if   left(ls_file,1)   =   '['   then
ls_filename   =   right(ls_file,len(ls_file)   -   1)
ls_filename   =   left(ls_filename,len(ls_filename)   -   1)
if   ls_filename   =   '..'   then   continue
else
if   right(ls_directorya,   1)   =   '\'   then
ls_filename1   =   ls_directorya   +   ls_file
else
ls_filename1   =   ls_directorya   +   '\'   +   ls_file
end   if
ll_filehandle   =   findfirstfilea(ls_filename1,ss_file)
findclose(ll_filehandle)
//get   file   time   begin  
if   ll_filehandle   =-1   then
setnull(ldt_filedatetime)
else
filetimetodosdatetime(ss_file.ftlastwritetime,lul_date,lul_time)
      lui_day       =   mod(lul_date,32)
      lui_month   =   mod(lul_date,512)/32
      if   lui_month   =   0   then
lui_month   =   1
      end   if
      lui_year       =   lul_date/512+1980
      lui_second   =   mod(lul_time,32)*2
      lui_minute   =   mod(lul_time,2048)/32
      lui_hour   =   (lul_time)/2048   +   8
      if   lui_hour   > =   24   then
lui_hour   =   lui_hour   -   24
ldt_filedatetime   =   datetime(relativedate(date(lui_year,lui_month,lui_day),1),time(lui_hour,lui_minute,lui_second))
      else
ldt_filedatetime   =   datetime(date(lui_year,lui_month,lui_day),time(lui_hour,lui_minute,lui_second))
      end   if
end   if  
//get   file   time   end
if   daysafter(date(ldt_filedatetime),date(adt_file_del_dt))   >   0   then
if   filedelete(ls_filename1)   <>   true   then
return   -1
end   if
end   if
end   if
next

return   0
发表于:2007-12-14 09:26:347楼 得分:0
long               lul_date  
long               lul_time              
int                   lui_year  
int                   lui_month  
int                   lui_day  
int                   lui_hour  
int                   lui_minute  
int                   lui_second  


你最好把上面的搞成一个结构,这样我觉得好点。


快速检索

最新资讯
热门点击