0

我发现堆栈上的示例代码使用 SHFILEOPERATION 删除指定目录中的所有文件,效果很好。我唯一的问题是它删除了进程中的目标目录。如果在 TSHFILEOpStruct 中为 pfrom 指定的目录在它包含的所有文件被删除后仍然存在,我会更喜欢它。

我想通过设置标志 FOF_FILESONLY 它只会删除文件,但也许我错过了一些东西。

我将我的 TSHFILEOpStruct 设置为以下内容:

FillChar(FileOp, SizeOf(fileOp), 0);
FileOp.wFunc  := FO_DELETE;
FileOp.pFrom  := PChar(DirName+#0); //Target directory string needs to be Double Null Terminated
FileOp.fFlags := FOF_FILESONLY or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI;
SHFileOperation(FileOp);

有没有这样设置 TSHFILEOpStruct 来完成这个?

此外,我使用的是 Delphi 2007,我无权访问 MSDN 文档中提到的所有标志(例如 FOF_NORECURSION)

为方便起见,如果需要,这里是上述文档的链接... http://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx

4

1 回答 1

4

你告诉它删除文件夹本身,所以它会。要仅删除文件夹内的文件,您需要使用文件名通配符掩码,例如:

FileOp.pFrom := PChar(DirName+'\*.*'#0);
于 2013-11-05T16:20:46.617 回答