替代重复同一目录的多个robocopy命令

  • 本文关键字:robocopy 命令 cmd robocopy
  • 更新时间 :
  • 英文 :


我有一个文件扩展名列表,我需要收集来自特定目录的所有文件,同时维护属性,时间戳等,这导致了我使用Robocopy。我希望有人能提出一个比我目前的解决方案更有效的方法?

目前,我使用以下命令将这些文件复制到一个"未处理"的目录:

robocopy %Directory1% "%Directory2%unprocessed" /Z /E /copy:dat *.pst *.ost *.doc *.docx *.pdf *.docm *.xls *.xlsx *.ppt /log+:%Directory%.txt

从"未处理"目录中收集的单个文件然后被排序到以每个文件扩展名命名的单个文件夹中,并在与"未处理"目录相同的级别上创建,同样使用单独的Robocopy命令:

robocopy "%directory2%unprocessed" %directory2%pst *.pst /Z /E
...
...
robocopy "%directory2%unprocessed" %directory2%ppt *ppt /Z /E

您可以理解,这会导致对"未处理"目录进行多次不必要的迭代。由于机器复制的性质,我无法将文件直接复制到最后的休息位置,所以我希望有人能提出一个更合适的解决方案,仍然允许文件属性保持完整。

(我提前道歉,这可能会变成一个讨论,而不是有人能直接回答这个问题)

给定示例中的%符号,看起来您可能将其作为批处理文件的一部分运行。无论哪种方式,如果您定义了环境变量,您都可以使用以下命令:

命令行:

for %e in (pst ost doc docx pdf dcom xls xlsx ppt) do robocopy "%Directory1%" "%Directory2%%e" /Z /E /copy:dat *.%e /log+:%Directory%.txt

Bat文件:

for %%e in (pst ost doc docx pdf dcom xls xlsx ppt) do robocopy "%Directory1%" "%Directory2%%%e" /Z /E /copy:dat *.%%e /log+:%Directory%.txt

另一件需要注意的事情是:您可能最终将所有docx文件都保存在doc和docx中,同样,xlsx也可能同时保存在xls和xlsx中。

最新更新