Конкатенация большого количества двоичных файлов
У меня есть большое количество (~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
Видя, что вам это нравится, я собираюсь превратить свой комментарий в ответ. Тогда вы можете принять это. :)
Питер