-3

由于我有一项任务必须递归地复制嵌套目录的文件以进行工作,因此我forfiles在 windows cmd 中发现了 -function。

它工作正常,现在我想知道该函数如何区分文件和目录?

如果每个文件都有一个像 .jpg .png .xls 或类似的文件扩展名,我可以理解,但我的一些文件没有扩展名,但它仍然可以工作。

由于我习惯了 linux,所以我尝试 google 源代码,但 windows 应用程序不是开源的,所以如果有人可以解释我,它是如何工作的,知道它会很有趣。

PS:为什么这被否决了?这是一个普遍的问题

4

2 回答 2

2

该命令最终将调用 WindowsFindFirstFile/FindNextFile函数。那些返回一个WIN32_FIND_DATA可能包含FILE_ATTRIBUTE_DIRECTORY标志的结构。如果未设置该标志,则它是一个文件。

于 2020-10-02T11:06:59.377 回答
1

在内部,文件和目录之间存在很大差异,典型的文件/目录处理命令知道这一点也就不足为奇了。文件没有扩展名(或者目录称为“directory.jpeg”)这一事实不会在这些命令中引起任何混淆。

如果您检查forfiles' "man page" ( forfiles /?),您可能会看到该/C开关允许您访问@isdir变量,这可以告诉您不同之处:您处理的是目录 (value: TRUE) 还是文件 (value: FALSE)?

于 2020-10-02T11:09:21.533 回答