Меню Рубрики

Установка кодировки в bat файле

Русский текст в консоли

Почему так происходит?
Консоль работает в кодировке DOS (codepage 866).
Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).

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

1 способ (сохранение файла в кодировке OEM-866):
Скачаем текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS) :

Чтобы создать новый файл в кодировке DOS:
Меню «Файл» -> «Сохранить как. » -> из выпадающего списка выбрать «Кодировка OEM-866«.
Файл должен иметь расширение bat или cmd.

Для себя я настроил AkelPad так, чтобы он всегда сохранял в кодировке OEM-866 (Настройки -> Параметры -> Кодировка по-умолчанию -> OEM-866.)

Скачать.
Сам пользуюсь вот такой модификацией что и Вам советую. Скачать.
Или качаем с официального сайта.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> выбрать «Сохранить в DOS-866«.
4) Вставить код.
5) Сохранить, запустить.

Полезные горячие комбинации клавиш:
Запуск скрипта (Ctrl + F5)
На весь экран (F11)
Сохранить (Ctrl + S)
Открыть в кодировке WIN (Alt + W)
Открыть в кодировке DOS (Alt + D)

Чтобы создать новый файл в кодировке DOS:
Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
«Файл» -> «Сохранить как. » -> пишем имя файла и расширение bat или cmd -> Сохранить.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
4) Вставить код.
5) Сохранить, запустить.

Помните: в редакторе не должно быть видно «крякозябер», иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума «портиться» в буфере. Выход: когда копируете код, убедитесь, что включена русская раскладка клавиш.

2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.

А именно, в начале пакетного файла написать:

источник

Не корректно отображается Русский текст в CMD? Решение есть!

Как корректно отобразить Русский текст в CMD. Проблемы с кодировкой могут возникнуть, например, при выполнении Bat файла, когда нужно вывести в консоль русский текст и при других обстоятельствах, о которых речь пойдёт далее.

Рассмотрим пример: когда нужно вывести в консоль Русский текст, скажем «Примет мир». Для этого создадим Bat файл с именем «1.bat». Используйте для этого обычный Блокнот Windows (Notepad.exe) Запишем в него следующие строки!

Для тех, кто не понял или не в курсе, строчки «echo.» я добавил специально, что бы были отступы, от строки «Примет мир»

Теперь запускаем файл 1.bat и результат будет такого вида.

Как видим проблема с кодировкой в cmd на лицо. И произошло это по следующей причине.

Стандартный блокнот Windows сохранил Bat файл в кодировке «1251» а консоль вывела его в кодировки «866». Вот от сюда все проблемы!

Решения проблемы с кодировкой в CMD. 1 Способ.

Для решения проблемы нужно просто использовать текстовой редактор, с помощью которого можно сохранить текст в кодировке «866». Для этих целей прекрасно подходит «Notepad++» (Ссылку для загрузки Вы можете найти в моём Twitter-e).

Скачиваем и устанавливаем на свой компьютер «Notepad++».

После запуска «Notepad++» запишете в документ те же строки, которые мы уже ранние записывали в стандартный блокнот.

Теперь осталось сохранить документ с именем «2.bat» в правильной кодировке. Для этого идём в меню «Кодировки > Кодировки > Кириллица > OEM-866»

и теперь сохраняем файл с именем «2.bat» и запускаем его! Поле запуска результат на лицо.

Как видим, текст на Русском в CMD отобразился, как положено.

Решения проблемы с кодировкой в CMD. 2 Способ.

Теперь рассмотрим ещё одну ситуацию, когда могут возникнуть проблемы с кодировкой в CMD.

Допустим, ситуация требует сохранить результат выполнения той или иной команды в обычный «TXT» файл. В приделах этого поста возьмём для примера команду «HELP».

Читайте также:  Установка колонок civic 4d

Задача : Сохранить справку CMD в файл «HelpCMD.txt. Для этого создайте Bat файл и запишите в него следующие строки.

После выполнения Bat файла в корне диска «C:\» появится файл «HelpCMD.txt» и вместо справки получится вот что:

Естественно, такой вариант не кому не понравится и что бы сохранить справку в понятном для человека виде, допишите в Bat файл строку.

Теперь содержимое кода будет такое.

После выполнения «Батника» результат будет такой:

Вот так на много лучше, правда?

Пожалуй, на этом я закончу пост. Добавить больше нечего. Если у Вас имеются какие-то соображения по данной теме, буду рад Вашему комментарию к посту.

Дополнительно из комментариев то Garric

Автор очень хорошо описал принцип. ! Но это неудобно.
Нужно бы добавить. Если автор добавит это в статью то это будет Good.
Создаём файл .reg следующего содержания:
——
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.bat\ShellNew]
«FileName»=»BATНастроенная кодировка.bat»
——
Выполняем.
——
Топаем в %SystemRoot%\SHELLNEW
Создаём там файл «BATНастроенная кодировка.bat»
Открываем в Notepad++
Вводим любой текст. (нужно!) Сохраняемся.
Удаляем текст. Меняем кодировку как сказано в статье. Сохраняемся.
———-
Щёлкаем правой кнопкой мыши по Рабочему столу. Нажимаем «Создать» — «Пакетный файл Windows».
Переименовываем. Открываем в Notepad++. Пишем батник.
В дальнейшем при работе с файлом не нажимаем ничего кроме как просто «Сохранить». Никаких «Сохранить как».

источник

Самый легкий способ исправить кодировку в cmd (командной строке), вместо кракозябр — русский шрифт.

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

Однажды решил проверить свой компьютер на вирусы и не локальным вирусником, а попробовать в деле небольшую программку ComboFix, она самостоятельно находит вирусы и удаляет их. Но произошел вот такой казус, смотрите:

Мне надо было сразу просмотреть отчет ComboFix (она выдает отчет после проверки) там я увидел, что она удалила вирус. Нашел в интернете, какие проблемы этот вирус приносит, а потом почитал информацию по этой программе. Узнал, что именно после удаления данного вируса отображение русских символов в cmd изменилось.

Cmd.exe — это и есть командная строка или программа с текстовым интерфейсом, выглядит вот так:

И полез я в поисковик, мне самому стало интересно! Не представляете сколько я информации перерыл по этой теме. Но все инструкции были почти одинаковые — «нужно скачать такой то код и добавить его в реестр компьютера». Но я очень осторожно отношусь к таким советам, реестр это вообще серьезная часть операционной системы и лишний раз туда лучше не залазить.

Короче, убил на это дело почти весь день. Уже не помню на каком форуме, мне подсказали один способ, все очень просто — как дважды два! Сейчас все разложу Вам по полочкам, сами удивитесь как просто.

Вот по этому адресу живет командная строка: c:\WINDOWS\system32\cmd.exe

Чтобы ее запустить нужно нажать пару кнопочек: ПускВыполнить → вводим в поле команду – cmd и жмем ОК .

Вот способ: оказывается нужно было просто изменить шрифт в этом окне! Я убил целый день, чтобы найти эту информацию! Имею ввиду окно командной строки.

Щелкаете правой кнопкой мыши, вверху окна, в выпадающем меню выбираем «Свойство» , заходим во вкладу «Шрифт» и выбираем Lucida Console жмем ОК.

Все больше ничего мудрить не надо! Пользуйся на здоровье! Если Вам необходимо поменять кодировку текста, то вот следующая инструкция.

Посмотреть какая сейчас у Вас кодировка, вводим chcp и Вам выдаст Вашу кодировку. Для изменения кодировки делаем так:

где [код] это цифровой параметр нужного шрифта. Вот некоторые коды:

На этом у меня все. Если данная статья вам понравилась, а главное помогла в решении Вашей проблемы, то отблагодарите меня, путем проставления лайка за мои старания. А также подписывайтесь на мой канал , на мой ютуб-канал и инстаграм . Тема компьютеры и устранение неисправностей почти бесконечна. Поэтому, я уверен, что будет еще много всего интересного. Всем спасибо за внимание и до новых встреч!

Читайте также:  Установки на самсунг гелекси

источник

Установка кодировки в bat файле

Вопрос

Всем доброго времени суток!

Имеется следующий скрипт (ниже он приведент в упрощенном виде):

ipconfig /all > «%userprofile%\script.txt»

ping 127.0.0.1 >> «%userprofile%\script.txt»

Проблема в том, что в результатирующем файле получается не нормально отображение кириллицы:

Настройка протокола IP для Windows

Имя компьютера . . . . . . . . . : owner-pc

Тип узла. . . . . . . . . . . . . : гибридный

IP-маршрутизация включена . . . . : нет

WINS-прокси включен . . . . . . . : нет

Порядок просмотра суффиксов DNS . : localdomain

Подключение по локальной сети — Ethernet адаптер:

DNS-суффикс этого подключения . . : localdomain

Описание . . . . . . . . . . . . : AMD PCNET семейство PCI Ethernet адаптеров

Физический адрес. . . . . . . . . : 00-0C-29-4E-80-1F

Dhcp включен. . . . . . . . . . . : да

Автонастройка включена . . . . . : да

Маска подсети . . . . . . . . . . : 255.255.255.0

Основной шлюз . . . . . . . . . . : 192.168.253.2

Основной WINS-сервер . . . . . . : 192.168.253.2

Аренда получена . . . . . . . . . : 14 ноября 2010 г. 17:22:54

Аренда истекает . . . . . . . . . : 14 ноября 2010 г. 17:52:54

ЋЎ¬Ґ­ Ї ЄҐв ¬Ё б 127.0.0.1 Ї® 32 Ў ©в:

ЋвўҐв ®в 127.0.0.1: зЁб«® Ў ©в=32 ўаҐ¬п

Ответы

@echo off
setlocal
1>nul chcp 1251

for /f «tokens=*» %%i in (‘ipconfig /all’) do call:echo «%%i»
for /f «tokens=*» %%i in (‘ping 127.0.0.1’) do call:echo «%%i»
for /f «tokens=*» %%i in (‘ping www.ru’) do call:echo «%%i»
goto:eof

:echo
if %1==»» (1>>1.txt echo. && goto:eof)

1″
set «str=%str:/=^/%»
set «str=%str:>=^>%»
set «str=%str: nul chcp 866

Если будет спотыкаться на каком-либо символе при выводе `echo`, то подкорректируй переменную %str%

>При этом же в случае, если просто вбивать эти команды в командной строке, то выдача нормальная, т.е. проблема имеется только при перенаправлении команды?

Консоль windows унаследовала кодировку от DOS (866), а сама windows использует кодировку 1251. Поэтому, либо надо менять кодировку перед выводом (перенаправлением вывода) в файл, как это вам показали выше (chcp /?), либо просматривать результаты перенаправления при помощи средств, которые эту кодировку понимают. Например, встроенные в far manager редактор и viewer поддерживают, как кодировку 866, так и быстрое переключение режима просмотра 866 1251, что очень удобно. В других программах, которые вы используете для просмотра, сформированных отчетов (notepad, etc) вы можете выбрать шрифт в кодировке 866 (например, Terminal).

Все ответы

@echo off
setlocal
1>nul chcp 1251

for /f «tokens=*» %%i in (‘ipconfig /all’) do call:echo «%%i»
for /f «tokens=*» %%i in (‘ping 127.0.0.1’) do call:echo «%%i»
for /f «tokens=*» %%i in (‘ping www.ru’) do call:echo «%%i»
goto:eof

:echo
if %1==»» (1>>1.txt echo. && goto:eof)

1″
set «str=%str:/=^/%»
set «str=%str:>=^>%»
set «str=%str: nul chcp 866

Если будет спотыкаться на каком-либо символе при выводе `echo`, то подкорректируй переменную %str%

>При этом же в случае, если просто вбивать эти команды в командной строке, то выдача нормальная, т.е. проблема имеется только при перенаправлении команды?

Консоль windows унаследовала кодировку от DOS (866), а сама windows использует кодировку 1251. Поэтому, либо надо менять кодировку перед выводом (перенаправлением вывода) в файл, как это вам показали выше (chcp /?), либо просматривать результаты перенаправления при помощи средств, которые эту кодировку понимают. Например, встроенные в far manager редактор и viewer поддерживают, как кодировку 866, так и быстрое переключение режима просмотра 866 1251, что очень удобно. В других программах, которые вы используете для просмотра, сформированных отчетов (notepad, etc) вы можете выбрать шрифт в кодировке 866 (например, Terminal).

Коллеги, большое спасибо за ответ. Очень удобным со стороны простого пользователя мне показался вариант с изменением шрифта в Notepad, т.к. не требует установки дополнительного ПО на каждый ПК и достаточно просто выполняется.

Если Вы заметили из выдачи, которую я поместил в первом посте, то выдача команды ipconfig /all идет нормально, а вот все остальное неразборчиво. Соответственно, если я меняю шрифт на Terminal, то все становится нормально кроме ipconfig /all.

Подскажите, пожалуйста, как финально должен выглядеть скрипт, если я хочу использовать эти команды:

ipconfig /all > «%userprofile%\script.txt»
ping 127.0.0.1 >> «%userprofile%\script.txt»
ping www.ru >> «%userprofile%\script.txt»
pause

, но так, что бы ipconfig /all шла в той же кодировке, что и остальные команды. Т.е. сделать так, что бы пользователю было достаточно сменить кодировку в блокноте, что бы можно было нормально ознакомиться с содержанием файла.

Читайте также:  Установка dohc на sohc

Если можно, то приведите, пожалуйста, весь скрипт целиком, т.к. я слаб в написании скриптов.

Еще раз спасибо за помощь.

> но так, что бы ipconfig /all шла в той же кодировке, что и остальные команды.

В батнике, штатными средствами, я не вижу другого способа.

> Если можно, то приведите, пожалуйста, весь скрипт целиком

Я привел батник целиком, единственно запутался при тестировании и забыл поменять местами две последние строчки. Рабочий вариант для ipconfig и ping:

@echo off
setlocal
1>nul chcp 1251

for /f «tokens=*» %%i in (‘ipconfig /all’) do call:echo «%%i»
for /f «tokens=*» %%i in (‘ping 127.0.0.1’) do call:echo «%%i»
for /f «tokens=*» %%i in (‘ping www.ru’) do call:echo «%%i»

:echo
if %1==»» (1>>»%userprofile%\script.txt» echo. && goto:eof)

1″
set «str=%str:/=^/%»
set «str=%str:>=^>%»
set «str=%str: >»%userprofile%\script.txt» echo %str%

Да, действительно батник сработал, но есть одна загвоздка. Как я писал выше весь скрипт целиком будет несколько сложнее и будет использоваться удаленными конечными пользователями, которые вообще не разбираются в ИТ.

А выдача данного батника имеет нижеприведенный вид. А так как в оригинале команд будет раз в 5 больше (пинг шлюза, внешнего интерфейса шлюза и т.д.), то по телефону будет не реально объяснить пользователю найти какую-то конкретную строчку, если они графически не разделены.

Возможно ли сделать, как я писал выше изменить кодировку только одной команды ipconfig /all. Что бы потом нужно было только изменить шрифт в блокноте.

источник

Кодировки в Windows

В данной статье пойдёт речь о кодировках в Windows. Все в жизни хоть раз использовали и писали консольные приложения как таковые. Нету разницы для какой причины. Будь-то выбивание процесса или же просто написать «Привет. Я не могу сделать кодировку нормальной, поэтому я смотрю эту статью!».

Тем, кто ещё не понимает, о чём проблема, то вот Вам:

А тут было написано:

В любом случае в Windows до 10 кодировка BAT и других языков, не использует кодировку поддерживающую Ваш язык, поэтому все русские символы будут писаться неправильно.

1. Настройка консоли в батнике

Сразу для тех, кто пишет chcp 1251 лучше написать это:

Первый способ устранения проблемы, это Notepad++. Для этого Вам нужно открыть Ваш батник таким способом:

Не бойтесь, у Вас откроется код Вашего батника, а затем Вам нужно будет сделать следующие действия:

Если Вам ничего не помогло, то преобразуйте в UTF-8 без BOM.

2. Написание консольных программ
Нередко люди пишут консольные программы(потому что на некоторых десктопные писать невозможно), а кодировка частая проблема.

Первый способ непосредственно Notepad++, но а если нужно сначала одну кодировку, а потом другую?

Сразу для использующих chcp 1251 пишите это:

Второй способ это написать десктопную программу, или же использовать Visual Studio. Если же не помогает, то есть первое: изменение кодировки вывода(Пример на C++).

3. Изменение chcp 1251
Если же у Вас батник, то напишите в начало:

Теперь у Нас будет нормальный вывод в консоль. На других языках (С++):

4. Сделать жизнь мёдом
При использовании данного способа Вы не сможете:

  • Разрабатывать приложения на Windows ниже 10
  • Спасти мир от данной проблемы
  • Думать о других людях
  • Разрабатывать десктопные приложения, так как Вам жизнь покажется мёдом
  • Сменить Windows на версию ниже 10
  • Ну и понимать людей, у которых Windows ниже 10

Установить Windows 10. Там кодировка консоли специально подходит для языка страны, и Вам больше не нужно будет беспокоиться об этой проблеме. Но у Вас появится ещё 6 проблем, и вернуться к предыдущей лицензионной версии Windows Вы не сможете.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

источник