Альтернатива нескольким командам 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, поэтому я надеюсь, что кто-то может предложить более подходящее решение, которое по-прежнему позволит атрибутам файлов оставаться нетронутыми.

(Заранее извиняюсь, что это может превратиться в дискуссию, а не в то, что кто-то может напрямую ответить на это)


person Beerlol    schedule 24.06.2014    source источник
comment
Рассматривали ли вы возможность использования Python или чего-то подобного для достижения этой цели?   -  person Jim    schedule 20.09.2014


Ответы (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

Бат файл:

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. Windows всегда подбирает более длинные расширения с 3-символьными расширениями.

person Scott C    schedule 09.10.2014