Ноу-хау: Буфер, консоль и XP

21 ноября 2016 (00:00:00)

После рассказа о пользовании буфером Windows в командной строке стало понятно, что рассказ этот нуждается в дополнении. Таки довольно много — больше, чем я думал, — людей до сих пор живут под WinXP. В которой нету такой утилитки, как clip.exe.

Чего делать в данном случае? Самый простой и очевидный вариант — скопировать clip.exe из рабочей папки Windows у кого-нибудь, кто пользует WinServer2003 к себе в рабочую папку WinXP. Проверено лично, что в данном конкретном случае всё совместимо и будет работать как надо.

Однако имеется более изящный выход, который вполне можно рекомендовать и тем, кто живёт под более новыми операционками — по сравнению со штатным clip.exe он имеет одно изрядное преимущество.

Дядька по имени Диомидис Спинеллис, преподаватель Афинского университета, написал небольшую библиотечку утилит под названием Outwit — как он сам говорит, это «набор для сложной конвейерной манипуляции данными». Его творение позволяет работать с реестром, буфером обмена, системным журналом событий, свойствами документов и кое-чем ещё. Домашняя страница находится здесь.

В данном контексте нас будет интересовать утилитка под именем winclip.exe. Её вполне можно использовать отдельно от остальных программок. Делает ровно то, что нужно: манипулирует с буфером из командной строки. Типичный пример использования выглядит так:

    pandoc.exe -f markdown -t html sometext.txt | winclip.exe -c -m -b

Небольшое пояснение по ключам вызова. -c говорит о том, что стандартный ввод (в данном случае замкнутый через конвейер) должен быть отправлен в буфер; -m говорит о том, что используется мультибайтный юникод (Pandoc работает в utf8); -b добавляет к тексту так называемую метку порядка байт (BOM), которая улучшает распознавание текста некоторыми приложениями (хуже от неё точно не будет). Полный список ключей доступен по вызову winclip -h. Подробную документацию можно скачать с домашней странички проекта, ссылку см. выше.

Чем хорош этот рецепт? Работает под старыми операционками и позволяет легко и непринуждённо пользоваться юникодом. Чем он плох? Автор в документации пишет, что утилиты писаны и скомпилированы исключительно под процессоры Intel. Вот тут ничего проверить и прокомментировать не могу, ибо другого железа под рукой не имею.