2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Разбить файл на две неравные части.
Сообщение05.11.2012, 15:14 


03/10/06
826
Требуется бинарный файл разбить на 2 части. Такая задача, полагаю, нередко возникает перед пользователями, начало или конец файла отбросить. На каком из языков программирования это сделать проще всего, или быстрее?

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение05.11.2012, 16:29 
Заслуженный участник
Аватара пользователя


06/10/08
6422
На шелле. (head -c [число байт] в BSD/GNU, gc -Encoding byte -TotalCount [число байт] в Windows PowerShell)

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение06.11.2012, 15:06 


03/10/06
826
gc -Encoding byte -TotalCount [число байт]
Как имя файла добавить, куда содержимое будет записано. Нужно отбросить начало файла, приведённая команда отбрасывает начало файла? Файл бинарный, не текстовый.

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение06.11.2012, 15:53 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Нет, эта наоборот берет начало.
Для того, чтобы отбросить n байт файла test.bin и записать результат в test.bin.truncated, надо что-то типа вот этого (проверить не могу, винды под рукой нет) :
gc test.bin -encoding byte | select -skip n > test.bin.truncated

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение06.11.2012, 16:09 


03/10/06
826
Ок, проверим. Как там в окошке из буфера (в буфер) копировать текст, или набирать только все буквы?

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение06.11.2012, 16:09 
Заслуженный участник


09/08/09
3438
С.Петербург
Вот так можно:
Код:
[byte[]] $b = gc -Encoding Byte c:\Temp\input.bin
sc c:\temp\head.bin -Value $b[0..999] -Encoding Byte
sc c:\temp\tail.bin -Value $b[1000..($b.Length-1)] -Encoding Byte

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение06.11.2012, 16:20 


12/06/12
34
В Linux есть команда tail, она может выводить N последних байтов.

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение06.11.2012, 20:29 


03/10/06
826
Maslov в сообщении #640749 писал(а):
Вот так можно:

То, что доктор прописал, спасибо. Без массива, похоже не проходят варианты.
Вариант "gc test.bin -encoding byte | select -skip n > test.bin.truncated" выдал файл с числовыми значениями символов из начального файла в столбик, типа {89 114 ...}.
По пути вариант на Delphi был сваян, но через PS действительно коротко.

 Профиль  
                  
 
 Re: Разбить файл на две неравные части.
Сообщение06.11.2012, 22:57 
Заслуженный участник


09/08/09
3438
С.Петербург
Если планируете работать с PS, скачайте Quest PowerGUI: там довольно удобный редактор скриптов (PowerGUI Script Editor) с подсветкой синтаксиса, интеллисенсом, полноценным отладчиком и хелпами.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group