Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование отдной структуры каталогов в другую

Ответить
Настройки темы
CMD/BAT - [решено] Копирование отдной структуры каталогов в другую

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите структуру батника

Исходные данные:
каталоги с файлами
Папка 1
Папка 11
Папка 111
Папка 112
Папка 12
Папка 121
Папка 122

Внутри папок XXX лежат файлы типа 01-01-01.csv (дата-месяц-год) - ВАЖНО -> внутри каждой папки имена файлов одинаковы.

Нужно: перенести эти файлы в структуру каталогов типа

0000-01 (год-месяц)
Папка 1
Папка 11
Папка 111
Папка 112
Папка 12
Папка 121
Папка 122
0000-02
Папка 1
Папка 11
Папка 111
Папка 112
Папка 12
Папка 121
Папка 122

где в папках XXX будут лежать файлы только за конкретный месяц.

Отправлено: 13:48, 30-05-2012

 

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off

Set From=D:\Папка с данными
Set To=D:\Папка с отсортированными данными

FOR %%D IN ("Папка 1" "Папка 11" "Папка 111" "Папка 112" "Папка 12" "Папка 121" "Папка 122") DO (
    FOR /F "usebackq delims=" %%F IN (`Dir /B /A:-D "%From%\%%~D\??-??-??.csv"`) DO Call :FDir %%D "%%F"
    Rd "%From%\%%~D" >nul 1>Nul 2>Nul 
)

GoTo :Eof

:FDir
Set Name=%~2
Set God=%Name:~6,2%
Set Mes=%Name:~3,2%

If Not Exist "%To%\20%God%-%Mes%\%~1\" Md "%To%\20%God%-%Mes%\%~1\"
If Exist "%From%\%~1\%~2" Move /Y "%From%\%~1\??-%Mes%-%God%.csv" "%To%\20%God%-%Mes%\%~1\" >Nul
Папка From и To может быть одной и той же, там располагаются исходные и отсортированные папки. Пустые папки удаляются. Если этого не надо, уберите строку с RD. Сделано в предположении, что год >=2000

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 30-05-2012 в 22:23.


Отправлено: 22:14, 30-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, счас буду пробовать.

Отправлено: 07:47, 31-05-2012 | #3


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png 1.png
(2.7 Kb, 9 просмотров)
Тип файла: png 11.png
(98.0 Kb, 5 просмотров)

megaloman
К сожалению моих знаний явно не хватает и я не все правильно объяснил.

Папка 1
Папка 11
Папка 111
Папка 112
Папка 12
Папка 111
Папка 112
- это структура вложенности папок
наименование Папка 11 и Папка 12 разные
Внутри 11 и 12 всегда 2 папки с одинаковыми именами
и уже внутри них файлы.

Я попытался подделать код под себя, но не срослось))).
Вернул все как было у Вас

Код: Выделить весь код
@Echo Off

Set From=D:\2\mat\k
Set To=D:\2\test

FOR %%D IN ("zhd" "1t" "2t") DO (
    FOR /F "usebackq delims=" %%F IN (`Dir /B /A:-D "%From%\%%~D\??-??-??.csv"`) DO Call :FDir %%D "%%F")
)

GoTo :Eof

:FDir
Set Name=%~2
Set God=%Name:~6,2%
Set Mes=%Name:~3,2%

If Not Exist "%To%\20%God%-%Mes%\%~1\" Md "%To%\20%God%-%Mes%\%~1\"
If Exist "%From%\%~1\%~2" Move /Y "%From%\%~1\??-%Mes%-%God%.csv" "%To%\20%God%-%Mes%\%~1\" >Nul

Выдает следующее
D:\2\mat>2.bat
Файл не найден
Не удается найти указанный файл.
Не удается найти указанный файл.


На картинке структура папок и файлы

Отправлено: 09:24, 31-05-2012 | #4


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off

Set From=D:\Папка 1 с данными
Set To=D:\Папка с отсортированными данными

FOR /F "usebackq delims=" %%D IN (`Dir /B /A:D /S "%From%\"`) DO (
    FOR /F "usebackq delims=" %%F IN (`Dir /B /A:-D "%%D\??-??-??.csv"`) DO Call :FDir "%%D\" "%%F"
    Rd "%From%\%%~D" >nul 1>Nul 2>Nul 
)

GoTo :Eof

:FDir

Set Name=%~2
Set God=%Name:~6,2%
Set Mes=%Name:~3,2%

If Not Exist "%To%\20%God%-%Mes%\%~p1\" Md "%To%\20%God%-%Mes%\%~p1\"
If Exist "%~1%~2" Move /Y "%~1%~2" "%To%\20%God%-%Mes%\%~p1" >Nul
Папка To не должна быть вложена в From. Пустые папки низшей вложенности удаляются, если есть RD после For.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:36, 31-05-2012 | #5


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, завтра с утра отчитаюсь.

Отправлено: 16:58, 31-05-2012 | #6


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Все супер.
Большое спасибо.

Отправлено: 13:23, 01-06-2012 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование отдной структуры каталогов в другую

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Копирование только самых новых файлов в папках с сохранением структуры папок hoh Скриптовые языки администрирования Windows 3 03-01-2012 10:22
CMD/BAT - [решено] Копирование дерева каталогов Ksenya Скриптовые языки администрирования Windows 7 27-03-2011 23:20
CMD/BAT - [решено] Конвертирование файлов с сохранением структуры каталогов Sarge81 Скриптовые языки администрирования Windows 3 17-09-2010 07:12
CMD/BAT - [решено] как осуществить копирование по маске с сохранением структуры папок seriych Скриптовые языки администрирования Windows 3 29-05-2010 17:10
Бэкап структуры каталогов с правами доступа AlexKKK Microsoft Windows NT/2000/2003 10 23-05-2006 22:21




 
Переход