PDA

Показать полную графическую версию : bat'ник переноса и разархивирования файлов


So Sensually
29-11-2011, 10:49
Всем привет. Задача... Есть папка Exchange в которую должны сыпаться обменники из папок "1","2","3"..."20" В эти папки файлы приходят в rar архиве, в Exchange они должны попадать в разархивированном виде с таким же названием файлов.

Т.е. нужен батник который при запуске проверяет конкретную папку например "1" (а лучше сразу несколько папок) и если в ней что то есть, то разархивировать это и кидать в Exchange.

Помогите пожалуйста...

Loran_rus
29-11-2011, 12:14
for /r %%i in (*.rar) do "C:\Program Files\WinRAR\UnRAR.exe" e "%%i" "C:\Exchange"

Команду выполнять из самой верхней директории где хранятся папки с архивами
Распаковывает только файлы, если в архиве попадаются папки то файлы из них попадут в C:\Exchange, если нужно сохранить полный пути замените ключ E на Х
Папка C:\Exchange должна существовать по указанному пути
Лучше сразу добавить ключ для действий с одноименными файлами

So Sensually
29-11-2011, 13:22
Спасибо, работает! Но есть очень большое НО!! Из папок не удаляются архивы и при следующем запуске батника он пытается заново их кинуть в экчендж. Что дописать что бы после распаковки и копирования папки отчищались?

PC_Maniac
29-11-2011, 14:15
Можно так:
del /s "*.rar"

So Sensually
01-12-2011, 15:31
Потестил - не очень все гладко...

Скрипт работает около 40-50 секунд, если обменник загружается в папку в момент работы скрипта, то скрипт его не обрабатывает(поскольку обменник еще не весь загрузился), но удаляет!(((

Iska
01-12-2011, 16:32
So Sensually, навскидку — пусть в момент начала:
обменник загружается в папку »
первым делом кладётся некий маркерный файл, наличие которого в папке «говорит» основному скрипту о том, что идёт процесс загрузки, и делать пока ничего не надо. После окончания процесса загрузки маркерный файл должен быть удалён загружавшей стороной.




© OSzone.net 2001-2012