XTAL256 Ответов: 1

Конкатенация большого количества двоичных файлов


У меня есть большое количество (~1800) небольших (~2-6 КБ) файлов, которые я хочу объединить в один большой файл.

Я попробовал использовать сценарий PowerShell с помощью Get-Content и Add-Content но это было мучительно медленно. Кто-нибудь знает относительно быстрый способ сделать это с помощью сценария PowerShell, некоторых других системных команд или небольшого приложения?

Я не хочу скачивать и устанавливать какое-то раздутое программное обеспечение только для выполнения этой простой операции, но один автономный исполняемый файл был бы в порядке. Я думаю, что мог бы сам сколотить небольшое приложение на C++, но не знаю, будет ли это быстрее.

Итак, есть предложения?


(EDIT: я должен упомянуть, что я действительно использовал -ReadCount флаг на Get-Content, чтобы увеличить входной буфер, но это, похоже, не помогло. И, конечно же, -Encoding был установлен на byte Поэтому я не уверен, что бутылочное горлышко-это ввод-вывод или что-то, что PowerShell делает внутри себя.)

Sergey Alexandrovich Kryukov

Отметьте свою платформу и язык. (Да, я вижу C++ и PowerShell, но пометьте его! Это вас интересует, а не нас.)
Проблема очень проста. В чем ваша трудность?
--СА

XTAL256

Хм, я знаю, что могу использовать C++ и PowerShell, но мой вопрос не ограничивался ими. Но я буду использовать эти метки по вашей просьбе.

Sergey Alexandrovich Kryukov

Что касается "быстрее". Почему вы думаете, что кто-то больше заинтересован в том, чтобы инвестировать свое время в эту скучную задачу, чем вы? Кстати, почему именно C++? Единственное, что ты знаешь, или что? Почему Именно PowerShell?
--СА

Peter_in_2780

Что не так с подстановочной формой команды копирования?
copy /b sourcesdir\*.* destfile
или что-то очень похожее

XTAL256

Я видел этот метод, упомянутый на других форумах, когда на днях искал способ PowerShell. Но эти люди просто привели пример двух или более файлов. Мне и в голову не пришло использовать подстановочный знак.
Я сомневаюсь, что это будет намного быстрее, но я мог бы попробовать.

EDIT: Вау, это очень быстро! На данный момент у меня нет доступа к реальным файлам, поэтому я просто попробовал его на некоторых фиктивных данных, но операция заняла всего несколько секунд для 1000 файлов по 3 КБ каждый.

спасибо

Peter_in_2780

Видя, что вам это нравится, я собираюсь превратить свой комментарий в ответ. Тогда вы можете принять это. :)
Питер

1 Ответов

Рейтинг:
5

Peter_in_2780

Что не так с подстановочной формой команды копирования?

copy /b sourcesdir\*.* destfile 
или что-то очень похожее

Комментарий: Фактическое копирование файлов-ничто по сравнению с их поиском, открытием, закрытием и т. д. Это объясняет, почему подстановочные знаки-это большое ускорение. И ни строчки кода для написания тоже! :)

Овации,
Питер