Почему-то немногие знают об одной очень полезной утилите, которая появилась в операционных системах Microsoft
Речь идёт о clip.exe — консольной программе, которая перехватывает текст со стандартного ввода и помещает его в системный буфер обмена.
Никаких специальных параметров не требует, принцип использования вполне ясен из описания. Можно сделать одно из двух — либо замкнуть на неё конвейером выход
pandoc -f markdown -t html sometext.txt | clip
либо заткнуть ей вход
clip <sometext.txt
В первом случае буфер будет содержать весь результат выполнения pandoc, во втором случае в буфер попадёт содержимое указанного файла. Дальше можно идти в
Особенно удобен первый вариант — он не засоряет диск временными файлами и позволяет прицеплять разные утилиты конверсии к любым текстовым редакторам, если они в принципе умеют пользоваться внешними инструментами.
Есть только одна засада: кодировка текста. Буфер обмена Windows достаточно умён, и когда в него помещается текст, нужно вместе с ним поместить и информацию о том, в какой кодировке он написан. Поскольку clip является консольной утилитой, он и укажет кодовую страницу консоли — а это наверняка допотопная DOS-овская 866.
Что будет результатом, если ваша программа отдаёт текст в другой кодировке (например, в юникоде)? Правильно, кракозябры в буфере. Чтобы их не было, нужно воспользоваться командой сhcp, которая меняет кодовую страницу консоли.
В приведённом выше примере нужно создать cmd-файл следующего содержания:
chcp 65001
pandoc -f markdown -t html %1 | clip
и запустить его, указав в качестве параметра имя преобразуемого файла. Здесь «65001» — это кодовая страница, соответствующая юникодовскому utf8. Кроме 866 и 65001, полезно помнить ещё 1251 — это родная для Windows кодировка кириллицы.