回答
procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteFiles(ExtractFilePath(ParamStr(0)),'*.jpg');
end;
procedure DeleteFiles(APath, AFileSpec: string);
var
lSearchRec:TSearchRec;
lPath:string;
begin
lPath := IncludeTrailingPathDelimiter(APath);
if FindFirst(lPath+AFileSpec,faAnyFile,lSearchRec) = 0 then
begin
try
repeat
SysUtils.DeleteFile(lPath+lSearchRec.Name);
until SysUtils.FindNext(lSearchRec) <> 0;
finally
SysUtils.FindClose(lSearchRec); // Free resources on successful find
end;
end;
end;
(有没有必要fillchar的lsearchrec)所有 – 2009-06-12 20:46:10
您可以使用SHFileOperation功能。关于使用SHFileOperation的好处是,你必须将文件删除到回收站的选项,你会得到正常的API动画,这样用户就知道是怎么回事。缺点是删除将比Jeff的代码稍长一些。
有几种包装在那里。我使用了BP Software的这个免费包装。整个包装文件只有220行,易于阅读和使用。我不会将其作为组件安装。我发现将这个单元添加到我的项目中很简单,只需根据需要创建并释放对象。
更新:下载链接BP软件的网站不再有效。有一个older version on the Embarcadero website。
TSHFileOp(1.3.5.1)(3 KB) 31日,2006年
TComponent是一个包装 为SHFileOperation API复制, 移动,重命名或删除(有 回收斌支持
五月)文件系统 对象。
SHFileOperation的文件名参数支持MS DOS样式通配符。所以,你可以使用该组件是这样的:
FileOps := TSHFileOp.Create(self);
FileOps.FileList.Add(DirectoryName + '\*.jpg');
FileOps.HWNDHandle := self.Handle;
FileOps.Action := faDelete;
FileOps.SHOptions :=
[ofAllowUndo, ofNoConfirmation, ofFilesOnly, ofSimpleProgress];
FileOps.Execute;
我通常显示“你确定”的消息自己,所以我总是通过ofNoConfirmation标志,以便Windows不会再问。
如果你不想删除所有的JPG文件,或者您需要从多个目录中删除,你可以到文件列表中的字符串列表调用execute之前,外卡添加完整的文件名或不同的路径。
这是MSDN Page for SHFileOperation
请注意,SHFileOperation已被从Windows Vista开始的IFileOperation取代。我继续在Windows Vista上使用SHFileOperation,没有任何问题。
在较新版本的Delphi,你可能会使用在System.IOUtils
的类,它基本上包装FindFirst
,FindNext
等:
procedure DeleteFilesMatchingPattern(const Directory, Pattern: string);
var FileName: string;
begin
for FileName in TDirectory.GetFiles(Directory, Pattern) do TFile.Delete(FileName);
end;
- 1. 如何使用SVN删除所有匹配模式的目录?
- 2. 删除与时间模式匹配的目录中的所有文件
- 3. Python Fabric - 删除匹配目录中带有空格的模式的文件?
- 4. 通配符模式匹配目录中的文件
- 5. 如何在命令行中匹配另一个模式的目录中找到匹配模式的文件?
- 6. 删除与iOS中的模式匹配的文件
- 7. 如何删除目录中的文件
- 8. 如何删除当前目录中与给定模式不匹配的某些文件?
- 9. 递归列表匹配模式的目录中的文件
- 10. 命令行递归删除匹配的文件和目录
- 11. 如何从一组文件中删除所有匹配模式的行?
- 12. 猛砸如何删除与源达匹配的17管目标文件记录
- 13. 如何删除mongodb中条件不匹配的记录
- 14. 使用模式匹配删除Windows文件夹
- 15. 正则表达式htaccess匹配模式,除非目录存在
- 16. 模式匹配文件中的文本?
- 17. Ant删除子目录中的子目录和文件,但不删除目录本身的任何文件
- 18. 匹配模式选择文件从一个目录
- 19. 匹配和删除项目
- 20. 如何删除匹配模式的postgresql数据库?
- 21. 列出与Java中的模式匹配的目录中的文件
- 22. 如何删除不匹配通配符的文件?
- 23. 提示的文件/目录中删除
- 24. 删除目录中的空文件夹
- 25. 如何RegEx - 匹配模式,但排除?
- 26. VB删除匹配列表的文件
- 27. 如何用模式删除文件?
- 28. 如何说服AWS CLI同步排除与目录模式匹配的任何文件?
- 29. mod_rewrite:如何根据“可用性”匹配目录或根目录中的文件?
- 30. 删除340个模式目录
你可以使用正则表达式。做一些Google模式匹配,RegEx不是我的专长,但他们是强大的地狱。 – 2009-06-12 20:05:24
(文件API通常不支持正则表达式,只是普通的通配符。完整的regex是外壳和脚本语言更多的东西) – 2009-06-12 20:42:57