如何删除某一文件夹下的部分文件(有条件删除而非全部)?(50分)

  • 主题发起人 主题发起人 zhanfalong
  • 开始时间 开始时间
Z

zhanfalong

Unregistered / Unconfirmed
GUEST, unregistred user!
某一文件夹存放每天产生的临时文件(如D:/temp/),如何实现每天删除前一天(或每星期删除前一星期)产生的临时文件。(我用的是在任务计划中添加此程序,是否有其他的好方法?)
 
遍历文件夹下文件<br>取得文件修改时间<br>删除符合条件的
 
可以使用FindFirst、FindNext、 FindClose函数来实现,如:<br>var<br>&nbsp; sr: TSearchRec;<br>&nbsp; FileAttrs: Integer;<br>begin<br>&nbsp; FileAttrs := 0;<br>&nbsp; FileAttrs := FileAttrs + faAnyFile;<br>&nbsp; if FindFirst('c:/temp/*.*', FileAttrs, sr) = 0 then<br>&nbsp; begin<br>&nbsp; &nbsp; repeat<br>&nbsp; &nbsp; &nbsp; if sr.Time=某日期时间 then<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; 删除文件<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; until FindNext(sr) &lt;&gt; 0;<br>&nbsp; &nbsp; FindClose(sr);<br>&nbsp; end;<br>end;
 
先查找符合条件的,再删除
 
最好给代码
 
删除文件可以使用function DeleteFile(const FileName: string): Boolean;
 
miaofeng大哥,请完善你的代码。
 
sr.time为Integer型(如808217574、808217585),如何转换,跟时间比较?
 
以下代码可以实现:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; sr: TSearchRec;<br>&nbsp; FileAttrs: Integer;<br>&nbsp; Dir,FileName:string;<br>begin<br>&nbsp; Dir:='d:/temp/';<br>&nbsp; FileAttrs := 0;<br>&nbsp; FileAttrs := FileAttrs + faAnyFile;<br>&nbsp; if FindFirst(Dir+'*.*', FileAttrs, sr) = 0 then<br>&nbsp; begin<br>&nbsp; &nbsp; repeat<br>&nbsp; &nbsp; &nbsp; FileName:=Dir+sr.Name;<br>&nbsp; &nbsp; &nbsp; if FileDateToDateTime(sr.Time) &lt; Now then<br>&nbsp; &nbsp; &nbsp; &nbsp; deletefile(FileName);<br>&nbsp; &nbsp; until FindNext(sr) &lt;&gt; 0;<br>&nbsp; &nbsp; FindClose(sr);<br>&nbsp; end;<br>end;<br>多谢miaofeng!
 

Similar threads

后退
顶部