|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сортирование файлов по папкам (копирование в многоуровневые папки по дате создания) |
|
CMD/BAT - Сортирование файлов по папкам (копирование в многоуровневые папки по дате создания)
|
Новый участник Сообщения: 10 |
Профиль | Отправить 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 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Systems, пробуйте:
@echo off :: Обрабатываемый диск set "drive=E:" :: Папка назначения set "out=E:\_Backup_" for /f "delims=" %%i in ('2^>nul dir /ad/b "%drive%\Cam_*"') do ( for /f "delims=" %%j in ('2^>nul dir /a-d/b/s "%drive%\%%i\*.avi"') do ( set file=%%~nj call set "folder=%%file:~-20,4%%\%%file:~-27,6%%\%%file:~-16,2%%\%%file:~-14,2%%" 2>nul call md "%out%\%%folder%%" >nul call move "%%j" "%out%\%%folder%%" ) ) exit /b . |
Отправлено: 18:49, 02-10-2014 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Спасибо огромное, все работает просто замечательно!
|
Отправлено: 19:07, 02-10-2014 | #12 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Добрый день, еще небольшая просьба, после переноса файлов остаються папки с файлами *.log, для прмера evt_20141001_151835022.log
Можно в этом же скрипте после переноса *.avi удалить все папки с оставшимися файлами. Удалить нужно папки которые находятся по вложению после e:\Cam_02\Video\Event, для примера e:\Cam_01\Video\Event\20141001\09 - нужно удалить все папки с оставшимися в них файлами 20141001\09, 20141001\10, 20141002\08, 20141002\11 и так далее e:\Cam_02\Video\Event\20141001\09 - нужно удалить все папки с оставшимися в них файлами 20141001\08, 20141001\13, 20141002\12, 20141002\14 и так далее |
Отправлено: 09:18, 03-10-2014 | #13 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Systems, дополнил:
@echo off :: Обрабатываемый диск set "drive=E:" :: Папка назначения set "out=E:\_Backup_" for /f "delims=" %%i in ('2^>nul dir /ad/b "%drive%\Cam_*"') do ( for /f "delims=" %%j in ('2^>nul dir /a-d/b/s "%drive%\%%i\*.avi"') do ( set file=%%~nj call set "folder=%%file:~-20,4%%\%%file:~-27,6%%\%%file:~-16,2%%\%%file:~-14,2%%" 2>nul call md "%out%\%%folder%%" >nul call move "%%j" "%out%\%%folder%%" ) for /f "delims=" %%j in ('2^>nul dir /ad/b "%drive%\%%i\Video\Events"') do ( rd /q/s "%drive%\%%i\Video\Events\%%j" ) ) exit /b . |
Отправлено: 09:59, 03-10-2014 | #14 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Ничего неизменилось в работе, файлы перенес а папки с мусором остальсь.
|
Отправлено: 10:28, 03-10-2014 | #15 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Systems, я просто из-за невнимательности вместо "Event" написал "Events". Вот так правильно:
@echo off :: Обрабатываемый диск set "drive=E:" :: Папка назначения set "out=E:\_Backup_" for /f "delims=" %%i in ('2^>nul dir /ad/b "%drive%\Cam_*"') do ( for /f "delims=" %%j in ('2^>nul dir /a-d/b/s "%drive%\%%i\*.avi"') do ( set file=%%~nj call set "folder=%%file:~-20,4%%\%%file:~-27,6%%\%%file:~-16,2%%\%%file:~-14,2%%" 2>nul call md "%out%\%%folder%%" >nul call move "%%j" "%out%\%%folder%%" ) for /f "delims=" %%j in ('2^>nul dir /ad/b "%drive%\%%i\Video\Event"') do ( rd /q/s "%drive%\%%i\Video\Event\%%j" ) ) exit /b . |
Отправлено: 10:54, 03-10-2014 | #16 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Спасибо огромное, все работает.
Со своей стороны я то же недосмотрел что в некоторых каталогах есть еще одна папка Record - которую нужно очищать по тому же принципу что и Event e:\Cam_01\Video\Record\20141001\09 - нужно удалить все папки с оставшимися в них файлами 20141001\09, 20141001\10, 20141002\08, 20141002\11 и так далее Можно еще и это добавить в скрипт |
Отправлено: 11:16, 03-10-2014 | #17 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать @echo off :: Обрабатываемый диск set "drive=E:" :: Папка назначения set "out=E:\_Backup_" for /f "delims=" %%i in ('2^>nul dir /ad/b "%drive%\Cam_*"') do ( for /f "delims=" %%j in ('2^>nul dir /a-d/b/s "%drive%\%%i\*.avi"') do ( set file=%%~nj call set "folder=%%file:~-20,4%%\%%file:~-27,6%%\%%file:~-16,2%%\%%file:~-14,2%%" 2>nul call md "%out%\%%folder%%" >nul call move "%%j" "%out%\%%folder%%" ) for /f "delims=" %%j in ('2^>nul dir /ad/b "%drive%\%%i\Video\Event" "%drive%\%%i\Video\Record"') do ( 2>nul rd /q/s "%drive%\%%i\Video\Event\%%j" 2>nul rd /q/s "%drive%\%%i\Video\Record\%%j" ) ) exit /b |
Отправлено: 11:33, 03-10-2014 | #18 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Спасибо огромное
|
Отправлено: 11:37, 03-10-2014 | #19 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Копирование папки по дате | Daemonstar | Скриптовые языки администрирования Windows | 9 | 26-04-2024 23:01 | |
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) | 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 - [решено] Копирование самого позднего по дате создания каталога. | SANIOK_AV | Скриптовые языки администрирования Windows | 2 | 04-12-2009 17:29 |
|