我知道那里可能有工具可以做我想做的事情,但我需要批量处理。我正在尝试构建一个批处理文件,以便我可以将一个父目录的子文件夹中的所有文件与第二个目录的子文件夹中的文件进行比较,然后从第一个父目录中复制第二个目录中的所有文件到第三个目录。
以例如:
Parent dir 1= X:\Testing\Working (has arbitrary subdirs like 1, 2, 3, 4, etc.)
Parent dir 2= D:\Files\Dump (has subdirs for year, month, and day)
Parent dir 3= X:\Testing\Processing (has the same arbitrary subdirs just as parent dir 1)
我想让批处理查看父目录1中的文件,将它们与父目录2中的文件进行比较仅过去48小时左右(因为"转储和#中有数千个文件) 34;位置),并将父目录2中缺少的任何文件复制到父目录3。
我目前遇到的是我可以使用fc
命令将父目录1中的文件与父目录2中的文件进行比较,但它会比较它失败的整个路径,因为X: \ Testing \ Working \ 1 \ testfile.txt在D:\ Files \ Dump \ 1 \ testfile.txt中不存在(它将是D:\ Files \ Dump \ 2016 \ 6 \ 9 \ testfile.txt)。我尝试了一个forfiles
命令,但无法使它工作,并且看到它很慢,所以我不再尝试。
如果我能得到一些东西来获取第一个文件并在48小时(或两天)内递归地将它与所有文件夹/文件进行比较,那么我可以让循环部分用于其余文件。我不知道该去哪里,因为我离批处理大师很远,所以我们非常感谢正确方向的任何一点!
PS:让批处理在Dir 1中创建文件列表,将它们与Dir 2中的文件列表进行比较,然后将丢失的文件推送到Dir 3会不会更容易?
编辑:嗯,我一直发现我的部分问题。将dir /b /a-d
命令与/s
一起使用会导致整个路径包含文件名而不仅仅是文件名。如果我将路径指向一个文件的正确文件夹,它工作正常,但我需要它来处理子文件夹。无论如何使用dir /b /a-d /s
并且只获取文件名?它需要另一个for
命令吗?