我有一个简单的批处理文件,用于将大量图像从网络驱动器复制到本地驱动器,我不得不在运行过程中停止。
c:\pic>copy i:\pictures\*.*
它似乎是按字母顺序复制的。
知道这是否是默认设置吗?
我想从中间重新开始,因为复制需要很长时间。
最佳答案
所有使用通配符模式处理文件或目录列表的命令都会调用相同的 Windows 内核函数,这些函数会调用文件系统的驱动程序以返回与该模式匹配的文件/目录名称。
COPY、DEL、DIR、FOR 等命令不对匹配的文件名进行排序处理前的通配符模式。 DIR 具有选项 /O
以根据下一个字符请求有序输出。
NTFS (新技术文件系统)始终按字母顺序返回匹配通配符模式的文件名,因为按字母顺序将文件/目录名称添加到主文件表中,如 eryksun在他的评论中解释。
但其他文件系统如 FAT基于文件系统 FAT16、FAT32 或 exFAT 在 Windows 上也很常见,但不要这样做。这些文件系统的驱动程序返回当前存储在文件分配表中的文件/目录名称,这意味着文件名的顺序根本没有排序。
看起来源驱动器使用的是 NTFS。因此,文件按字母顺序复制。
但请注意,字符串的字母顺序有不同的方法。例如,字母顺序可以严格根据字符的代码值,也可以考虑地区和语言的特定方面。特定于语言的字母排序通常称为 locale alphabetic 排序,例如对于德语 ä
=a
,Ä
=A
等虽然字符的code值不同。
应用程序通常还使用字母数字排序算法,这意味着名称为 Test1.txt
、Test10.txt
和 Test2 的 3 个文件的排序顺序。 txt
(基于字母代码值的排序)不是此处列出的,而是 Test1.txt
、Test2.txt
和 Test10.txt
.
因此eryksun在他的第三条评论中写道,NTFS 文件名的顺序可以不同于 Windows 资源管理器使用的文件名顺序(参见 Sort order in Windows Explorer )或使用选项 /命令 DIR打开
。
关于batch-file - COPY 命令以什么顺序将文件从源复制到目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44204762/