Войти

Показать полную графическую версию : Хитрое перемещение файлов рекурсивно


Maikl_relax
31-03-2015, 20:32
Здравствуйте!

Есть Папка "Контрагенты" в ней 517 папок по имени. В каждой из них 12 папок:
1) 11 шаблонных папок с городами, в каждой еще некоторая структура (не более 3 уровней)
2) папка 2015 (не пустая)

необходимо переместить в каждом контрагенте все файлы *.* из 1) в корень папки 2015 (2). Только файлы! После перемещения удалить папки 1) (со всей структурой)

Прошу помощи. Нужен пакетник (cmd, bat)

Elven
02-04-2015, 13:44
приблизительно так
for /F %%d in ('dir /B /AD') do (
if not 2015==%%~nd (
for /F %%f in ('dir /B /A-D %%d') do (
copy %%f 2015\*.*)
))

!Внимание! не проверял как оно работает, возможно что никак, с телефона писал, проверить негде.

Maikl_relax
02-04-2015, 15:59
Elven
Спасибо!

Получилось следующее решение

@echo off

:: путь папки.
set "folder=T:\ТОРГОВЫЙ ДОМ \ОБОСОБЛЕННЫЕ ПОДРАЗДЕЛЕНИЯ\! КОНТРАГЕНТЫ"

pushd "%folder%"
for /d %%i in (*) do (
pushd "%%i"
for /d %%j in (*) do if "%%j" neq "2015" (
for /f "delims=" %%k in ('2^>nul dir/a-d/b/s "%%j"') do (
move/y "%%k" "2015"
)
rd/q/s "%%j"
)
popd
)
popd

exit/b

правда файлы с одинаковым именем перезаписывает, но потеря пары файлов не критично для моего случая =)

Iska
02-04-2015, 17:12
правда файлы с одинаковым именем перезаписывает »
Maikl_relax, об этом никто из просящих почему-то не задумывается — до факта. А исполняющим уже наосто… надоело раз за разом, раз за разом, раз за разом спрашивать, как следует поступать, если имена файлов совпадут.




© OSzone.net 2001-2012