我正在使用 Windows API 递归删除许多文件和文件夹。我在没有 UI 的情况下使用它并抑制错误。问题是,如果其中一个文件正在使用中,它会完全失败。我期待这种可能性,并希望这种情况继续下去,跳过任何此类情况。失败的一个文件实际上是调用此删除命令的同一个 EXE(无论如何都会在全部完成后将其删除。
这就是我现在正在做的事情:
procedure DeleteDirectory(const DirName: string);
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), 0);
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar(DirName+#0);//double zero-terminated
FileOp.fFlags := FOF_SILENT or FOF_NOERRORUI or FOF_NOCONFIRMATION;
SHFileOperation(FileOp);
end;
我怎样才能让它跳过正在使用的文件的任何事件?我查看了文档,但找不到任何可以做到这一点的东西。