Копирование отдной структуры каталогов в другую
Подскажите структуру батника
Исходные данные:
каталоги с файлами
Папка 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 будут лежать файлы только за конкретный месяц.
|
Код:
@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
|
Спасибо, счас буду пробовать.
|
Вложений: 2
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
Файл не найден
Не удается найти указанный файл.
Не удается найти указанный файл.
На картинке структура папок и файлы
|
Код:
@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.
|
Спасибо, завтра с утра отчитаюсь.
|
Все супер.
Большое спасибо.
|
Время: 23:13.
© OSzone.net 2001-