如何删除一个目录的所有*.txt文件???急!!!!!!!!!(100分)

  • 主题发起人 主题发起人 topboy
  • 开始时间 开始时间
T

topboy

Unregistered / Unconfirmed
GUEST, unregistred user!
要最简短代码!谢谢!
不管目录是否存在!
比如删除c:/temp/*.txt
如果存在对应目录和文件,则删除
如果不存在,也不报错!!!
 
最简短的代码是这样的
if WinExec('command.com /c del c:/temp/*.txt',sw_hide)<32 then //在Win9X下
WinExec('cmd.exe /c del c:/temp/*.txt',sw_hide);//在Win2K或WinXp下
 
没错!恐怕这是最简单的方法了,不过如果即要在9X下又要在2000下用得加操作系统检测
苯办法是deletefile()循环。
 
用递归算法,
 
用FindFirst,FindNext,FindClose搜索该目录下的*.txt文件
对每个搜索结果使用DeleteFile
var
sr: TSearchRec;
FileAttrs: Integer;
begin
FileAttrs := faAnyFile;
if FindFirst('c:/temp', FileAttrs, sr) = 0 then
begin
repeat
DeleteFile(sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
 
哈哈,学得一招。不过这样会弹出一个窗口,不爽 。
 
GOHKI的可以。
 
to emonster:
不用加系统检测了,注意我给出的完整语句是
if WinExec('command.com /c del c:/temp/*.txt',sw_hide)<31 then
WinExec('cmd.exe /c del c:/temp/*.txt',sw_hide);
to 孔明.net:
不会弹出窗口,因为我用了SW_HIDE参数
 
把shellapi加到interface下;
procedure TForm1.deleteClick(Sender: TObject);
//把d:/sybase目录下所有文件发送到回收站
var
sourcefile:STRING;
lpfileop:TSHFILEOPSTRUCT;
begin
sourcefile:= 'd:/sybase/*.*'+#0#0;
fillchar(lpfileop,sizeof(lpfileop),0);
with lpfileop do
begin
wnd:=form1.handle;
wFunc:=FO_DELETE;
pFrom:=pchar(sourcefile);
fflags:= FOF_ALLOWUNDO;
end;
if SHFileoperation(lpfileop)<>NOERROR then
if lpfileop. FAnyOperationsAborted then
showmessage('删除文件被终止')
else
showmessage('删除文件出错');
end;

 
li_zhifu ,高!!!
 
用WinExec, ShellExecute, SHFILEOperation三种方法都可以做到.
 
接受 !谢谢!
 
后退
顶部