На главную страницу сайта celitel.info
Вы не вошли в систему! [ ВОЙТИ ] или [ ЗАРЕГИСТРИРОВАТЬСЯ ]
CELITEL » Справочник команд bat/cmd » Тема: Вывод русского текста из команд bat / cmd -- Стр. 1  | Перейти в: 

Послал Сообщение
healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 18-05-2015 10:54
            

По почте был задан вопрос о том, как выводить русский текст из bat / cmd файлов.
Возможно, эта информация будет полезна и для других. Часть своих ответов и не только помещаю сюда.

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 18-05-2015 10:58
            

При выводе русских букв необходимо помнить о кодировке.
Текст сообщения т.е сам bat / cmd должен быть в DOS (866) кодировке.
Многие текстовые редакторы его поддерживают.
Однако это не всегда удобно.

Раасмотрим необходимые действия если необходимо, что бы кодировка самого bat / cmd файла была в WIN (1251) и при этом корректно выводить русские буквы, например, командой echo.

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 19-05-2015 06:02
            

Для смены кодировок есть команда chcp и, казалось бы такой код приведет к желаемому результату

rem НЕ ВЕРНО
chcp 1251 >NUL
title Русский текст
chcp 866 >NUL
pause

Результат разочарует.

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 19-05-2015 06:46
            

Но не все так густно.
Внесем небольшие изменения в пример, приведенный выше

chcp 1251 >NUL
set x=Не ждите чуда, чудите сами
chcp 866 >NUL
title %x%
pause

Теперь русские буквы отразятся корректно.

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 19-05-2015 06:49
            

Аналогично команде title из предыдущего примера можно использовать команду echo.
Что бы каждый раз не переключать кодировки удобно такие сообщения собрать в блок.

chcp 1251 >NUL
set MSG01=Отсутствует исходный файл
set MSG02=Ошибка копирования
set MSG03=Успешное завершение программы
set TIT=Копирование файла
chcp 866 >NUL
Title %TIT%
....
echo %MSG01%
....
echo %MSG02%
....
echo %MSG03%

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 19-05-2015 07:01
            

Если такой блок получается достаточно большой, то, как мне кажется, не очень нагляно оставлять его в начале файла.
В таком случае можно из такого болка образовать процедуру, разместить в конце bat файла, а на исполнение вызвать эту процедуру командой call в начале bat файла. Из примера все должно стать понятнее))



....
call :blockmsg

Title %TIT%
....
echo %MSG01%
....
echo %MSG02%
....
echo %MSG03%
....
exit

:blockmsg
chcp 1251 >NUL
set MSG01=Отсутствует исходный файл
set MSG02=Ошибка копирования
set MSG03=Успешное завершение программы
set TIT=Копирование файла
chcp 866 >NUL
exit /b

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 19-05-2015 07:07
            

Следующий пример так же приведет к желаемому результату.
Как мне кажется, это менее наглядно и потребует несколько больше времени исполнения.

chcp 1251 >nul
for /f "delims=" %%A in ("Отойдите на безопасное расстояние") do >nul chcp 866& echo.%%A

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 21-08-2015 06:08
            

Проблемы с русским буквами могут возникать не только при выводе текста, но и при обработке файлов, в имени и (или) пути к которым эти буквы присутствуют.
Проблема имеет аналогичное решение.

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.


healer
Администратор

Из: Москва
Сообщения: 24467
 Вывод русского текста из команд bat / cmd
Послано: 21-08-2015 06:23
            

call :blockmsg

del /Q "%fname01%"
del /Q "%fname02%"
del /Q "%fname03%"
del /Q "%fname04%"

exit

:blockmsg
chcp 1251 >NUL
set fname01=c:\Documents and Settings\Ivanov\Рабочий стол\Справочник БИК (новый).lnk
set fname02=c:\Documents and Settings\Ivanov\Рабочий стол\Справочник БИК.lnk
set fname03=c:\Documents and Settings\Ivanov\Рабочий стол\Вестник Банка России.lnk
set fname04=c:\Documents and Settings\Ivanov\Рабочий стол\Справочники.lnk

chcp 866 >NUL
exit /b

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.



Статистика

Сейчас у нас: и 5 Гостя(ей)
Всего сообщений: 26682
Всего тем: 1151
Поздравляем: van4inmihail !!

Based on:

 

  my counter Valid XHTML 1.0 Strict Valid CSS!