Вчера вечером пытался решить простенькую задачку: на нетбуке из большого (порядка 8Gb) eMule-овского временного файла нужно было взять первых 100Mb и записать на флэшку, чтобы сделать preview на телевизоре (сам нетбук 1020p видео не тянет в принципе). Сделать это нужно было с помощью подручных средств – штатных утилит Windows Vista да Far с Rar-ом. Никаких средств разработки на нетбуке не было. А аналогов Unix-овых head и tail в Windows, насколько мне известно, нет.
Первая мысль была поискать в Интернете какой-нибудь готовый splitter для файлов. Но это мне показалось неспортивным. Поэтому обошелся rar-ом. Сначала запускается архивация временного файла в многотомный архив с нулевым сжатием (rar a –m0 –v100m), которая прерывается после формирования первой части архива. Затем из этой первой части на флэшку распаковывается то, что там оказалось – как раз приблизительно 100Mb из большого временного файла :)
Голь, как водится, на выдумки хитра. На том и стоим, а точнее – лисапеды придумываем ;)
Но интересно, можно ли было сделать тоже самое при наличии Windows Vista и Far-а по-другому?
bat-ники это прошлый век
ОтветитьУдалитьнаш выбор - это JScript, который есть на всех виндах.
Единственно Верный (TM) язык JavaScript позволяет реализовать сколь угодно сложную логику.
А доступ к большинству COM-обьектов даёт офигенную свободу действий.
Путём небольших извращений на нём можно работать и с бинарниками тоже:
http://www.motobit.com/tips/detpg_read-write-binary-files/
Моё ИМХО: батники зло, поскольку они всё равно не кросплатформенны да и к тому же абсолютно нечитабельны и неотлаживаемы.
PS да, а если нужен UI - есть HTA, который тоже есть на всех без исключения виндах.
Ну я, в принципе, вообще без батников обошелся -- там всего-то две команды нужно выполнить.
ОтветитьУдалить>http://www.motobit.com/tips/detpg_read-write-binary-files/
Ой, чой-то мне захотелось на все свои компьютеры ставить Ruby. Там все как-то попроще ;)
Да, остроумно ;)
ОтветитьУдалитьДругой способ - всё же воспользоваться юниксовыми head и tail, которые всё же есть в винде.
Если нет, то идём Control Panel -> Programs and Features -> Turn Windows Features on or off, ставим себе Subsystem for UNIX-based Applications и радуемся юниксовым тулзам и тулчайну (cc/gcc, pthread.h, signal.h, stdint.h и всё такое)
>Другой способ - всё же воспользоваться юниксовыми head и tail,
ОтветитьУдалитьНе, не нашел я в своей русской Windows Vista Business такой подсистемы :(
Вот! Недоплатил за нормальную версию! :)
ОтветитьУдалитьОна доступна в серверных ОС и в клиентских типа Ultimate и Enterprise:
http://en.wikipedia.org/wiki/Interix
Ну тогда просто Cygwin ;)
не знаю, мне в плане "языка для скриптов автоматизации" не понравился даже питон - слишком сложен. Не нужны такому языку классы и прочие навороты, ИМХО. JavaScript наше всё :)
ОтветитьУдалить>Вот! Недоплатил за нормальную версию! :)
ОтветитьУдалитьВот какое фуфло мне, оказывается, впарил HP вместе с нетбуком! :)))
2Left:
ОтветитьУдалитьНу драться по этому поводу мы не будем :)
В шатной поставке Ruby есть такая классная вещь, как интерактивная среда -- irb. Я в ней как-то похожую задачу (только там, кажется нужно было еще с именами файлов манипулировать) решал -- все вылилось в 7-8 строк кода прямо в irb. И после выполнения каждой из строк я видел ее результат. Было здорово.
> И после выполнения каждой из строк я видел ее результат. Было здорово.
ОтветитьУдалитьЧо, прям превью видео показал?
>Чо, прям превью видео показал?
ОтветитьУдалитьОх, ё! Как же я сразу-то не додумался! :(
:)))
По большому счету -- как нефиг делать -- сповнуть из irb TheKMPlayer/SMPlayer/VLC и всех делов. А особые извращенцы, через Win32ole могли бы какой-нибудь WindowsMediaPlayer запустить :)
А аналогов Unix-овых head и tail в Windows, насколько мне известно, нет.
ОтветитьУдалитьВсе уже портировано:
1) http://sourceforge.net/projects/tailforwin32/files/
2) http://gnuwin32.sourceforge.net/packages/coreutils.htm
>Все уже портировано
ОтветитьУдалитьНу, это-то я знаю, но интересно было сделать не качая ничего :)
Кстати, cygwin мне больше нравится. По крайней мере tar из cygwin-а с tarball-ом SObjectizer-а справляется в лет. А вот из gnuwin32 -- нет.
Ограничения на плагины к Far в условиях задачи нет? :) Если так, то задача решается с помощью плагина Surgeon.
ОтветитьУдалить2yudincev: спасибо, будем знать теперь про этот плагин.
ОтветитьУдалитьв тотал-командере есть возможность разбить файл.
ОтветитьУдалитьдля фара тоже можно такой плугин поискать...
2night beast:
ОтветитьУдалить>в тотал-командере есть возможность разбить файл.
Не смог заставить себя пользоваться тоталом. Но раз в нем такая возможность есть -- это хорошо.