【问题标题】:W10 CMD forfiles [closed]W10 CMD forfiles [关闭]
【发布时间】:2020-10-02 11:01:28
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 简短回答:同样,Windows 资源管理器知道如何区分文件和目录。长答案NTFS.
  • 使用 forfiles@isdir 变量,该变量包含 TRUEFALSE: forfiles /P "…" /M "…" /C "cmd /C if @isdir==TRUE (echo The currently iterated item @path is a directory.) else (echo The currently iterated item @path is a file.)"

标签: windows cmd forfiles


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 2020-02-02
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 2018-12-21
      • 2012-02-17
      • 2019-03-22
      相关资源
      最近更新 更多