我有一个批处理文件,使用以下代码将文件夹(sourcefolder)的内容复制到另一个(destfolder):
robocopy /mt:128 /e /r:1 /w:1 /tee /log:%robolog% %sourcefolder% %destfolder%
然后,我希望生成按名称排序的这两个位置中的所有文件的列表。我使用以下行生成这些列表:
dir /s /b /a-d /o:n %sourcefolder% > %sourcelist%
dir /s /b /a-d /o:n %destfolder% > %destlist%
出于某种原因,列表没有以相同的方式排序。例如,源列表可能类似于:
sourcefolder\subfolder1\text.txt
sourcefolder\subfolder2\abc.txt
sourcefolder\subfolder3\file.exe
但目的地列表可能如下所示:
destfolder\subfolder2\abc.txt
destfolder\subfolder3\file.exe
destfolder\subfolder1\text.txt
我无法弄清楚为什么dir命令生成的列表不是以相同的顺序排列的。在移动到批处理文件的下一部分之前,我需要确保这些列表的顺序相同。
答案 0 :(得分:1)
dir /S
命令分别为每个子目录应用指定的排序顺序(/O:N
),但它不对目录进行排序。但是,有sort
命令,可在此处使用:
dir /B /S /A:-D /O:N "%sourcefolder%" | sort > "%sourcelist%"
dir /B /S /A:-D /O:N "%destfolder%" | sort > "%destlist%"
答案 1 :(得分:-1)
您可能更喜欢where命令的结果:
where/r "%sourcefolder%" *.*>"%sourcelist%"
where/r "%destfolder%" *.*>"%destlist%"