Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Kimurin
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 3
1

Сортировка большого количества файлов по папкам, созданным по части названия файлов

24.12.2014, 19:03. Просмотров 2909. Ответов 5
Метки нет (Все метки)

Здравствуйте, уважаемые! Сразу к делу.

Имеется папка, в ней уже более 500.000 файлов, и с каждым днем все больше на 3-4 тысячи. Тормоза при заходе в нее говорят мне, что настало время отсортировать все файлы по папкам.

Файлы выглядят так:

00000014746_doc20120718115433_015.jpg
00000014746_doc20120718115439_015.jpg
00000014746_doc20120718115446_015.jpg

Первые 11 знаков - это то, что эти файлы объединяет, номер заказа, короче. Все что после подчеркивания - это то название, что присвоил им сканер, дата и время сканирования.

Нужно чтобы создавалась папка на диске D: с именем 00000014746 и все файлы, имеющие этот номер в начале, копировались в нее. За ночь по идее управится?

Я правильно понимаю, что нужно, чтобы что-то построило список уникальных номеров, потом скинуло это в текстовик, затем по данным текстовика насоздавались бы папки, и дальше... или надо по-другому?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2014, 19:03
Ответы с готовыми решениями:

Как реализовать распределение файлов по папкам исходя из части имени файла?
Доброго времени суток, друзья! Есть папка в папке 200 - 300 файлов (И такие...

Сортировка файлов по папкам (ГОД-МЕСЯЦ)
Парни помогите, есть куча .jpg файлов с вырезанным EXIF, вот и их нужно...

Сортировка файлов в зависимости от их атрибутов по папкам
Добрый день:) Задачка: Командный файл должен из одного каталога...

Сбор файлов с большого количества хостов
Добрый день! Возникла необходимость сбора данных с большого количества хостов...

Сортировка файлов по форматам с распределением их по имеющимся папкам
Здравствуйте уважаемые форумчане. Имеется 25 папок, наименования которых 1,...

5
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
24.12.2014, 20:18 2
Bash
1
2
3
4
5
6
7
8
@echo off
 
set "from=C:\Test"
set "to=D:"
 
for /f "tokens=1* delims=_" %%i in ('dir/a-d/b "%from%"') do xcopy "%from%\%%i_%%j" "%to%\%%i\"
 
exit /b
0
volodin661
1865 / 923 / 154
Регистрация: 10.12.2013
Сообщений: 3,097
24.12.2014, 21:30 3
Цитата Сообщение от Kimurin Посмотреть сообщение
Тормоза при заходе в нее говорят
о том, что надо вынести подпапки с интересующими номерами заказов в виде ярлыков на Рабочий Стол

Добавлено через 5 минут
я в том смысле, что физически копировать файлы нет необходимости.
0
Kimurin
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 3
25.12.2014, 11:19  [ТС] 4
Цитата Сообщение от volodin661 Посмотреть сообщение
о том, что надо вынести подпапки с интересующими номерами заказов в виде ярлыков на Рабочий Стол
я в том смысле, что физически копировать файлы нет необходимости.
К заказу относится 10-15 файлов, на полмиллиона файлов это в районе 35 тысяч заказов. Интересующих номеров заказов нет, но бывает необходимость посмотреть скан конкретного заказа. В общем, 30 тысяч ярлыков на рабочем столе - это не вариант.

Добавлено через 1 час 45 минут
ComSpec, спасибо, все работает! Не могли бы прокомментировать каждую строчку, чтобы я хоть понял что за что отвечает? А то я только эхо офф распознал
0
Kimurin
0 / 0 / 0
Регистрация: 24.12.2014
Сообщений: 3
26.12.2014, 21:36  [ТС] 5
Все замечательно работает, но не мог бы кто-нибудь объяснить кое что. Как я понимаю, в цикле единично исполняется xcopy для каждого конкретного файла. На деле это получается очень долго, и дело не в скоростях дисков или сети - они работают далеко не на пределе. Как можно ускорить или оптимизировать этот скрипт? Я попробовал работать с разным количеством файлов, что 100.000 файлов, что 1 тысяча - на скорость это не влияет. Копируется приблизительно по 2-3 файла в секунду, иногда 1 файл несколько секунд, хотя файлики по 200-300Кб. Или влияет количество уже созданных папок в конечной директории? Или оно туда вообще не смотрит?

Спасибо.
0
Dragokas
Эксперт WindowsАвтор FAQ
17027 / 7085 / 856
Регистрация: 25.12.2011
Сообщений: 10,908
Записей в блоге: 16
27.12.2014, 12:07 6
Максимальную скорость можно получить если не копировать, а а перемещать файлы.
Делать это нужно, заранее создав структуру каталогов, затем подставив команду move по маске.

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

А вообще, я бы не заморачивался, и если задача только в том, чтобы получить более быстрый доступ
к файлам, сложенным в один каталог, то проще было бы делать не копирование, а создание ярлыков на каждый из них,
а сами папки хранить в другом месте, а не в той "складской", иначе при попытке перехода "через нее",
опять будете получать жесткие тормоза.

Добавлено через 25 минут
Еще лучше - не ярлыки, а хардлинки.
0
27.12.2014, 12:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2014, 12:07

Распределение файлов по папкам, создаваемым в соответствии с частями имён этих файлов
Всем привет, я работаю в сфере 3d визуализации и так получилось что огромные...

Распределение файлов по папкам, соответствующим расширениям файлов
Здравствуйте. Есть папка Downloads и в ней множество файлов с разным...

Преобразование файлов и перенос их в папки(названия папок содержится в именах файлов)
Доброй ночи! Тяжело быть глупой, помогите автоматизировать (пишу полную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru