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

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

Ответить
Настройки темы
CMD/BAT - Сортирование файлов по папкам (копирование в многоуровневые папки по дате создания)

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


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

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


Здравствуйте, помогите пожалуйста с батником. За месяц создается несколько тысяч файлов, и сортировать их вручную довольно долго.
Нужно следующие:
Есть папка с большим кол-вом файлов вида:

M11_Pob87_Cam_01_20131001_135437_0954.avi
M11_Pob87_Cam_02_20131001_135504_1006.avi
M11_Pob87_Cam_03_20141001_151822_0813.avi
M11_Pob87_Cam_04_20141001_155122_0922.avi
M11_Pob87_Cam_05_20141001_180623_0949.avi
M11_Pob87_Cam_06_20141001_185636_0995.avi

M11_Pob87_Cam_01 - название камеры
20141001 - дата создания файла
135437_0954 - временная метка

Нужно чтобы скрипт создал многоуровневый каталог с папками и подпапками следующего вида
Год
Cam_**
Месяц
День
Дату создания можно брать из названия файла или определить скриптом, как будет проще
Заранее благодарен за помощь!

Отправлено: 11:43, 02-10-2014

 

Ветеран


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

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


Цитата Systems:
M11_Pob87_Cam_01 - название камеры »
А «M11_Pob87_Cam_02» — название уже другой камеры?

Отправлено: 12:08, 02-10-2014 | #2



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

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


Ветеран


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

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


Код: Выделить весь код
@echo off

set "directory=D:\Camera"

pushd "%directory%"
for /f "delims=" %%i in ('2^>nul dir /a-d/b *.avi') do (
 set file=%%i
 call set "folder=%%file:~17,4%%\%%file:~10,6%%\%%file:~21,2%%\%%file:~23,2%%"
 2>nul call md "%%folder%%"
 >nul call move "%%i" "%%folder%%"
 )
popd

exit /b

Отправлено: 12:23, 02-10-2014 | #3


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


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

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


Цитата Iska:
А «M11_Pob87_Cam_02» — название уже другой камеры? »
Да, это название следующей камеры, может быть до Cam_32
M11_Pob87 - тоже может меняться, это название объекта, где установлена камера

Отправлено: 12:43, 02-10-2014 | #4


Ветеран


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

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


Цитата Systems:
M11_Pob87 - тоже может меняться, это название объекта, где установлена камера »
Приведите примеры. А то вдруг длина имён разная окажется.

Отправлено: 12:49, 02-10-2014 | #5


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


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

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


Цитата Iska:
Приведите примеры. А то вдруг длина имён разная окажется. »
Действительно длина имён разная
M6_Ubi14
M11_Pob87
M10_Pro226

И папка просмотра тоже многоуровневая, для примера
e:\Cam_02\Video\Event\20141001\09
\10
\11
\13
e:\Cam_02\Video\Event\20141002\09
\10
\11
\13

e:\Cam_03\Video\Event\20141001\09
\11
\12
\14
e:\Cam_03\Video\Event\20141002\09
\11
\12
\14
А пересортировать нужно все из папки е:\

И еще просьба, можно самому указывать папку где создавать катагоги
:: Обрабатываемая папка
set "directory=D:\Camera"
:: папка назначения
Set "Out=d:\_Backup_"

Последний раз редактировалось Systems, 02-10-2014 в 13:05.


Отправлено: 12:58, 02-10-2014 | #6


Ветеран


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

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


Код: Выделить весь код
@echo off

:: Обрабатываемая папка
set "directory=D:\Camera"

:: Папка назначения
set "out=D:\_Backup_"

pushd "%directory%"
for /f "delims=" %%i in ('2^>nul dir /a-d/b *.avi') do (
 set file=%%i
 call set "folder=%%file:~-24,4%%\%%file:~-31,6%%\%%file:~-20,2%%\%%file:~-18,2%%"
 2>nul call md "%out%\%%folder%%"
 >nul call move "%%i" "%out%\%%folder%%"
 )
popd

exit /b

Отправлено: 13:39, 02-10-2014 | #7


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


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

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


Извените что долго непроверял, пришлось отлучиться из офиса по работе.
Несовсем правильно отрабатывает.
Если указать
:: Обрабатываемая папка
set "directory=e:" не работает вообще

Нужно указивать конкретно папку
:: Обрабатываемая папка
set "directory=e:\Cam_02\Video\Event\20141001\14\" - тогда все нормально.

Можно как то это побороть

Отправлено: 17:45, 02-10-2014 | #8


Ветеран


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

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


Цитата Systems:
Есть папка с большим кол-вом файлов »
Цитата Systems:
Нужно указивать конкретно папку
:: Обрабатываемая папка
set "directory=e:\Cam_02\Video\Event\20141001\14\" - тогда все нормально. »

Systems, значит, всё-таки есть папки, а не папка?

Отправлено: 17:58, 02-10-2014 | #9


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


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

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


Я приводил пример структуры веше
И папка просмотра тоже многоуровневая, для примера
e:\Cam_02\Video\Event\20141001\09
\10
\11
\13
e:\Cam_02\Video\Event\20141002\09
\10
\11
\13

e:\Cam_03\Video\Event\20141001\09
\11
\12
\14
e:\Cam_03\Video\Event\20141002\09
\11
\12
\14
А пересортировать нужно все из папки на диске е:, f: и так далее

Отправлено: 18:08, 02-10-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) DIMM2005 Программное обеспечение Windows 36 03-01-2020 16:54
CMD/BAT - [решено] Копирование файлов по дате создания Syna Скриптовые языки администрирования Windows 27 23-05-2013 14:02
CMD/BAT - сортировка файлов по папкам по дате в названии insearches Скриптовые языки администрирования Windows 1 03-02-2013 17:03
CMD/BAT - [решено] Копирование папки по дате Daemonstar Скриптовые языки администрирования Windows 7 01-12-2010 03:22
CMD/BAT - [решено] Копирование самого позднего по дате создания каталога. SANIOK_AV Скриптовые языки администрирования Windows 2 04-12-2009 17:29




 
Переход