【问题标题】:In which order does command COPY copy files from source to destination?命令 COPY 以什么顺序将文件从源复制到目标?
【发布时间】:2020-02-04 22:28:16
【问题描述】:

我有一个简单的批处理文件,将大量图像从网络驱动器复制到本地驱动器,我不得不在运行过程中停止。

c:\pic>copy i:\pictures\*.*

它似乎是按字母顺序复制的。

知道这是否是默认设置吗?

我想从中间重新开始,因为复制需要很长时间。

【问题讨论】:

  • 看起来和这个stackoverflow.com/questions/4228807/…的问题类似
  • 我没有考虑检查它是否存在或文件的日期 - 我想快速回答复制功能的顺序。我可以检查文件的日期 - 大多数文件已经存在于以前的副本中,但许多图像已经更新。

标签: batch-file cmd


【解决方案1】:

所有使用通配符模式处理文件或目录列表的命令都调用相同的 Windows 内核函数,这些函数调用文件系统的驱动程序以返回与该模式匹配的文件/目录名称。

COPYDELDIRFOR 等命令不会对匹配的文件名进行排序处理前的通配符模式。 DIR 具有选项 /O 以根据下一个字符请求有序输出。

NTFS(新技术文件系统)总是按字母顺序返回匹配通配符模式的文件名,因为按照eryksun 在他的 cmets 中解释的那样,按字母顺序将文件/目录名称添加到主文件表中。

但其他文件系统,如基于FAT 的文件系统 FAT16、FAT32 或 exFAT 在 Windows 上也很常见,但不会这样做。这些文件系统的驱动程序返回当前存储在文件分配表中的文件/目录名称,这意味着文件名的顺序根本没有排序。

看起来源驱动器使用 NTFS。因此,文件按字母顺序复制。

但请注意,字符串的字母顺序有不同的方法。例如,字母顺序可以严格根据字符的代码值,或者可以考虑区域和语言的特定方面。特定语言的字母排序通常称为 locale alphabetic 排序,例如对于德语 ä=aÄ=A 等,尽管字符的代码值为不同。

应用程序通常还使用字母数字排序算法,这意味着名称为 Test1.txtTest10.txtTest2.txt(基于字母代码值的排序)的 3 个文件的排序顺序不是此处列出的,而是 @987654335 @、Test2.txtTest10.txt

所以正如eryksun 在他的第三条评论中所写,NTFS 文件名的顺序可以不同于 Windows 资源管理器使用的文件名顺序(参见Sort order in Windows Explorer)或命令 DIR 带有选项/ON

【讨论】:

猜你喜欢
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多