Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Хитрое перемещение файлов рекурсивно (http://forum.oszone.net/showthread.php?t=297747)

Maikl_relax 31-03-2015 20:32 2490163

Хитрое перемещение файлов рекурсивно
 
Вложений: 1
Здравствуйте!

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

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

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

Elven 02-04-2015 13:44 2490872

приблизительно так
Код:

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 2490975

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 2491007

Цитата:

Цитата Maikl_relax
правда файлы с одинаковым именем перезаписывает »

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


Время: 23:53.

Время: 23:53.
© OSzone.net 2001-