使用SHFileOperation以递归方式仅排除具有特定掩码的所有文件

时间:2016-10-28 01:04:02

标签: file delphi

我想使用*.tmp删除具有特定掩码的所有文件,例如*.logSHFileOperation()

所以,我认为有些事情是这样的:

Function SpeedDelFile(const fromDir, Mask: string): Boolean;
var
  FosFile: TSHFileOpStruct;
begin
  ZeroMemory(@FosFile, SizeOf(FosFile));
  with FosFile do
  begin
    wFunction := FO_DELETE;
    fFlags := FOF_NOCONFIRMATION or FOF_NO_CONNECTED_ELEMENTS or
               FOF_NOERRORUI;
    pFrom := PChar(fromDir+'\'+Mask + #0);
  end;
  Result := (0 = ShFileOperation(FosFile));
end; 

使用:

SpeedDelFile('C:\Users\%HomePath%\AppData\Local\Temp', '*.log');

C:\Users\%HomePath%\AppData\Local\Temp\中的文件已被删除,但不会排除C:\Users\%HomePath%\AppData\Local\Temp\中子文件夹中的文件。

我不想删除C:\Users\%HomePath%\AppData\Local\Temp\内的任何子文件夹。

我知道FindFirst() / FindNext(),但这些功能非常缓慢,可怕,但不符合我的期望。

我知道如何调整上面的代码吗?

0 个答案:

没有答案