среда, 18 января 2012 г.

Как напечатать UTF-8 текст из bat-файла?

Это просто! Надо всего лишь прочитать 100-500 мануалов по командной строке Windows и провести 200 экспериментов по написанию bat-скриптов)

Если серъёзно, то вывести файл с текстом в формате UTF-8 можно следующим образом

@echo off
set file=YourFileName
cmd /u /c chcp 65001 | echo my super text1 > "%file%"
cmd /u /c chcp 65001 | echo my super text2 >> "%file%"
cmd /u /c chcp 65001 | echo my super text3 >> "%file%"
...

Кавычки в записи "%file%" нужны по той причине, что имя файла может содержать пробелы.

Мы вызываем CMD cо флагом /u, который сообщает, что запускаемая консоль должна возвращать результат в формате UTF-8.

Далее в этой же строке после флага мы передаём команду. Кстати, флаг означает, что после выполнения переданной команды, консоль закрывается.

Как можно заметить, мы передаём две команды, разделённых знаком |. Данный знак позволяет записать две нужных нам команды в одну строку.

Первая команда chcp 65001 устанавливает кодировку UTF-8 в запущенной консоли. (Чтобы узнать, какая текущая кодировка установлена в консоли, достаточно вызвать команду chcp без параметров.)

Вторая команда echo текст > "%HOME%\%file%" печатает соответствующий текст в файл с именем "%HOME%\%file%", где имена переменных развёртываются в путь к домашней директории и имени файла .bash_login.

Комментариев нет:

Отправить комментарий