![]() |
Склеивание файлов в папках (желательно в bat, Но можно и ps)
ОС: Win
Задача: склеить все файлы из папки в один. Подробности: существует большое кол-во папок, например "qqq1", "qqq1 1", "qqq1 2"... .... "qqq N", в них находятся файлы примерно с таким именем "3332.file1", "3339.file1", "3412.file1" и т.д. по возрастанию индекса в имени (прирост "рандомный"). нужен батник, который будет работать по всем папкам и склеивать (в порядке увеличения индекса) содержимое каждой в отдельный файл, т.е. из папки "qqq1 4" получится "FILE_qqq1 4.dat". примечание: папок и файлов очень много (на данный момент около 50 миллионов файлов по 18500 в каждой папке), желательно что бы можно было указать с какой папки начать и сколько папок будет учавствовать, дабы предотвратить зависания и прочие неприятности. P.S. эта же задача, но с решением на *NIX http://forum.oszone.net/thread-272030.html |
Тишина, если файловая система — NTFS, и длина имён файлов одинакова, то так (не проверялось):
Код:
@echo off |
Цитата:
Цитата:
ещё вопрос: Цитата:
это с одной стороны критично, т.к. данных будет свыше 2тб и по оценке около 1 миллиарда файлов, т.е. процесс долгий. что бы в случае фейла (память забилась, диск отвалился, тачка зависла и проч ЧП в данной ситуации) не переделывать всё занаво или возиться с миграцией/удалением выполненых папок (что вообще очень не желательно, опасаюсь ошибок MFT, т.к. слишком много файлов), хотелось бы иметь возможность выбора среди обрабатываемых папок |
создам тему с подобной задачей в Linux, там на сколько я знаю нужно юзать cp/dd/cat (cat вроде как самое удачное для подобной задачи)
http://forum.oszone.net/showthread.p...06#post2254406 |
Цитата:
|
Цитата:
нет, есть все шансы что в одной из папок могут быть файлы типа qqq995 и следующий за ним qqq1003, т.е. как получится при сортировке по папкам. большую ясность внесу, индекс - имя файла, а расшерение у них у всех одно. но, думаю, это на многое влиять не будет. |
Тишина, жаль. Простой и быстрый вариант с «copy *.ext result» не состоится, поскольку первым окажется «qqq1003», а не «qqq995».
Цитата:
|
Вот как-то так:
Код:
$sRootPath = "E:\Песочница\0329" |
сложная конструкция... спасибо, я попробую!
в данный момент я эксперементирую с циклом и cat под Linux, как только будет положительный результат - отпишу в родственную тему. |
Время: 10:26. |
Время: 10:26.
© OSzone.net 2001-