2014-06-24 60 views
2

我有一個文件擴展名列表,我需要收集來自特定目錄的所有文件,同時保留屬性,時間戳等,這導致我使用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 

正如你可以欣賞,這導致「未處理」目錄多次不必要的迭代。由於robocopy的特性,我無法將文件直接複製到最終的休息場所,所以我希望有人可以建議一個更合適的解決方案,它仍然允許文件屬性保持不變。

(我提前,這可能變成一個討論道歉,而不是某人是能夠直接回答這個問題)

+0

你有沒有考慮過使用Python或類似的東西來實現這一目標? – Jim

回答

1

鑑於您的例子%的跡象,它看起來像你可能運行此爲部分的批處理文件。無論哪種方式,如果您有環境變量定義,你可以使用以下命令:

命令行:

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文件:

​​

其他有一點要注意:你會可能最終會包含doc和docx中的所有docx文件,同樣,xlsx最終會以xls和xlsx結尾。 Windows始終使用3個字符的擴展名來選擇較長的擴展名。