W10 CMD forfiles

W10 CMD forfiles

因为我有一个任务,我必须递归地复制嵌套目录的文件才能工作,所以我在 windows cmd 中发现了 forfiles 函数。

它运行正常,现在我想知道这个函数是如何区分文件和目录的?

如果每个文件的文件扩展名都是 .jpg .png .xls 之类的,我能理解,但我的一些文件没有扩展名,但它仍然起作用。

因为我习惯 linux,我尝试 google 源代码,但是 windows 应用程序不是开源的,所以如果有人能解释我,它是怎么做到的工作,知道会很有趣。

PS:为什么这会被否决?这是一个一般性问题

该命令最终将调用 Windows FindFirstFile/FindNextFile 函数。那些 return 一个 WIN32_FIND_DATA 结构可能包含一个 FILE_ATTRIBUTE_DIRECTORY 标志。如果未设置该标志,则为文件。

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

如果您查看 forfiles'“手册页”(forfiles /?),您可能会看到 /C 开关允许您访问 @isdir 变量,该变量可以告诉你区别:你处理的是目录(值:TRUE)还是文件(值:FALSE)?