|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Раскидать файлы по папкам согласно дате в имени файла |
|
|
CMD/BAT - [решено] Раскидать файлы по папкам согласно дате в имени файла
|
Пользователь Сообщения: 53 |
Профиль | Отправить PM | Цитировать Есть папка, где куча файлов, надо раскидать по папкам (создавая папки) согласно дате в имени файла
Имена файлов _ГГГГММДДЧЧССММ.jpg (пример: _20100401080242.jpg) Нужное имя папки ГГГГММДД (пример: 20100410) |
|
Отправлено: 10:28, 11-11-2011 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата spkvvs:
|
|
Отправлено: 11:17, 11-11-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Если "раскидать" - это переместить, не создавая дубликата файла, то логичнее Copy заменить нa Move, и перемещать не по 1 файлу, а группой по маске (по дате). Цикл For у gora тогда можно переписать в виде
For /R "%Folder%" %%i In (*.jpg) Do ( IF EXIST "%%i" ( Set name=%%~ni Set mask=!name:~1,8! MD "%Out%\!mask!" Move "%%~dpi?!mask!*%%~xi" "%Out%\!mask!\" ) ) |
------- Отправлено: 20:06, 11-11-2011 | #3 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Господа, поможите...
Нужно примерно то же самое, но: 1) дату нужно брать из атрибутов файла 2) имя создаваемых каталогов - "ДД-ММ" (и не спрашивайте, почему такое дурацкое имя. исторически сложилось) |
Отправлено: 11:06, 07-09-2012 | #4 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать @Echo Off SetLocal EnableDelayedExpansion :: Обрабатываемая папка Set Folder=e:\Temp\Source :: папка назначения Set Out=e:\Temp\jpg For /R "%Folder%" %%i In (*.jpg) Do ( Set tim=%%~ti Set tim=!tim:~0,5! Set tim=!tim:.=-! If Not Exist "%Out%\!tim!" MD "%Out%\!tim!" Copy "%%~i" "%Out%\!tim!">Nul ) |
|
Отправлено: 13:55, 07-09-2012 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Спасибо! Работает
|
Отправлено: 14:03, 07-09-2012 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Так... Условия задачи поменялись
Файлы текстовые, содержимое (текст) каждого файла начинается с даты в формате DDMMYYYY. Т.е. первая строка выглядит как-то так: 30082012|#|08606|0004....... Необходимо раскидать по тому же принципу, что и в задаче выше. С меня пиво |
Отправлено: 14:37, 07-09-2012 | #7 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать @Echo Off SetLocal EnableDelayedExpansion :: Обрабатываемая папка Set Folder=e:\Temp\Source :: папка назначения Set Out=e:\Temp\jpg For /R "%Folder%" %%a In (*.txt) Do ( Set flag= For /F "usebackq tokens=* delims=" %%i In ("%%a") Do ( If Not Defined flag ( Set flag=1 Set tim=%%i Set tim=!tim:~0,2!-!tim:~2,2! If Not Exist "%Out%\!tim!" MD "%Out%\!tim!" Copy "%%a" "%Out%\!tim!" ) ) ) |
Отправлено: 14:56, 07-09-2012 | #8 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Спасибо! Вы меня очень сильно выручили!
|
Отправлено: 15:00, 07-09-2012 | #9 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Уважаемый megaloman!
Помогите победить проблему- в приведенном ниже примере, в случае присутствия пробелов в названии папки из которой запускается батник - он не срабатывает(( , а если пробелов нет, то все ОК. Т.е. если папка "Январь 22" - не сработает, а если "Январь", то все хорошо. @Echo Off SetLocal EnableDelayedExpansion :: Обрабатываемая папка Set Folder="%cd%" :: папка назначения Set Out="%cd%" For /R "%Folder%" %%i In (*.*) Do ( Set ti=%%~ni MD "%Out%\!ti:~0,100!" Move "%%i" "%Out%\!ti:~0,100!">Nul ) Pause>Nul |
Отправлено: 09:49, 23-02-2022 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] переместить файлы по папкам согласно списку | shadowbat | Скриптовые языки администрирования Windows | 9 | 17-11-2023 14:51 | |
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) | DIMM2005 | Программное обеспечение Windows | 36 | 03-01-2020 16:54 | |
CMD/BAT - Разложить файлы из кучи по каталогам согласно образцу | Maartimus | Скриптовые языки администрирования Windows | 18 | 14-07-2012 13:37 | |
CMD/BAT - [решено] Поиск файла по маске и по дате | Баян | Скриптовые языки администрирования Windows | 2 | 14-03-2011 13:32 | |
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. | OSArev | Скриптовые языки администрирования Windows | 2 | 30-01-2011 11:58 |
|