Вчера вечером пытался решить простенькую задачку: на нетбуке из большого (порядка 8Gb) eMule-овского временного файла нужно было взять первых 100Mb и записать на флэшку, чтобы сделать preview на телевизоре (сам нетбук 1020p видео не тянет в принципе). Сделать это нужно было с помощью подручных средств – штатных утилит Windows Vista да Far с Rar-ом. Никаких средств разработки на нетбуке не было. А аналогов Unix-овых head и tail в Windows, насколько мне известно, нет.
Первая мысль была поискать в Интернете какой-нибудь готовый splitter для файлов. Но это мне показалось неспортивным. Поэтому обошелся rar-ом. Сначала запускается архивация временного файла в многотомный архив с нулевым сжатием (rar a –m0 –v100m), которая прерывается после формирования первой части архива. Затем из этой первой части на флэшку распаковывается то, что там оказалось – как раз приблизительно 100Mb из большого временного файла :)
Голь, как водится, на выдумки хитра. На том и стоим, а точнее – лисапеды придумываем ;)
Но интересно, можно ли было сделать тоже самое при наличии Windows Vista и Far-а по-другому?
16 комментариев:
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:
>в тотал-командере есть возможность разбить файл.
Не смог заставить себя пользоваться тоталом. Но раз в нем такая возможность есть -- это хорошо.
Отправить комментарий