С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/749: Рейтинг темы: голосов - 749, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 12.11.2009
Сообщений: 109
1

Русский язык в командной строке

04.09.2012, 19:37. Показов 138931. Ответов 84
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем ку.

Проблема в заголовке, собственно: вместо русского языка в bat-нике командой echo, я вижу всякую кракозябру.
Пробовал:
Bash
1
2
chcp 1251
chcp 886
Добавлять в реестр CodePage параметр
Ну никак просто. Кто знает, как починить?
Во вложении скрин работы bat-ника
Миниатюры
Русский язык в командной строке  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2012, 19:37
Ответы с готовыми решениями:

Английский язык в командной строке
Только что эксперементируя с кодировками, заметил прикол: если выставить кодировку 861 (Код: chcp...

русский язык в командной строке visual studio x64
Здравствуйте, знаю проблема не новая, но у меня почему то если компилить файл через саму IDE,...

Проверить, что в строке русский язык C#
Есть строка, Как осуществить проверку строки посимвольно, то что каждый символ русская буква. Как...

Русский язык в строке ошибок компилятора
Подскажите, как изменить язык отчета об ошибках с английского на русский? Программа Dev C++. с...

84
Модератор
Эксперт HardwareЭксперт Windows
15901 / 7923 / 755
Регистрация: 03.01.2012
Сообщений: 32,863
05.09.2012, 11:05 2
krow7, А шрифт в блокноте какой? Попробуйте Terminal
0
1 / 1 / 0
Регистрация: 12.11.2009
Сообщений: 109
05.09.2012, 12:29  [ТС] 3
Попробовал. Все так же, шифры. Скрин во вложении
Миниатюры
Русский язык в командной строке  
0
1 / 1 / 0
Регистрация: 12.11.2009
Сообщений: 109
05.09.2012, 20:55  [ТС] 4
Кстати, вот что надыбал: установочник баз для сервера Lineage. Батник, а словечки-то все русские
мб натолкнет на мысль, меня лично нет

Кликните здесь для просмотра всего текста
Код
@echo off
@color 1B
@title RusTeam Database Installer
REM ##############################################
REM ## “Є*¦ЁвҐ *Ё¦Ґ Ї*а*¬Ґвал ў*襩 Ў*§л ¤***ле ##
REM ##############################################

REM Џгвм Є Ї*ЇЄҐ mysql\bin
set mysqlBinPath=C:\Program Files\MySQL\MySQL Server 5.0\bin

set DateT=%date%

REM LOGINSERVER
set lsuser=root
set lspass=
set lsdb=l2rt
set lshost=localhost

REM GAMESERVER
set gsuser=root
set gspass=
set gsdb=l2rt
set gshost=localhost

REM ##############################################
REM ## RT Interlude Database Installer          ##
REM ##############################################

set mysqldumpPath="%mysqlBinPath%\mysqldump"
set mysqlPath="%mysqlBinPath%\mysql"

:Step1
cls
echo. ==============================================================================
echo. I                                                                            I
echo. I  RusTeam Server - ЋЇҐа*жЁЁ б Ў*§®© ¤***ле бҐаўҐа* *ўв®аЁ§*жЁЁ              I
echo. I____________________________________________________________________________I
echo. I                                                                            I
echo. I  1 - Џ®«**п Ё*бв*«пжЁп бҐаўҐа* *ўв®аЁ§*жЁЁ.                                I
echo. I  2 - ЏҐаҐ©вЁ Є гбв**®ўЄҐ Ё«Ё ®Ў*®ў«Ґ*Ёо ‘ҐаўҐа* ЁЈал.                      I
echo. I  3 - ‚л©вЁ.                                                                I
echo. I____________________________________________________________________________I
echo. I                                                                            I
echo. I  ‚Ќ€ЊЂЌ€…: ЏаЁ Ї®«*®© Ё*бв*«пжЁЁ ўбҐ ¤***лҐ ў Ѓ„ Ўг¤гв г*Ёз⮦Ґ*л !!!      I
echo. I                                                                            I
echo. ==============================================================================

set Step1prompt=x
set /p Step1prompt= ‚ўҐ¤ЁвҐ §**зҐ*ЁҐ:
if /i %Step1prompt%==1 goto LoginInstall
if /i %Step1prompt%==2 goto Step2
if /i %Step1prompt%==3 goto FullEnd
goto Step1

:LoginInstall
@cls
@title RusTeam Login Server Database Install
echo.
echo ЋзЁбвЄ* Ѓ„: %lsdb% Ё гбв**®ўЄ* бҐаўҐа* *ўв®аЁ§*жЁЁ.
%mysqlPath% -h %lshost% -u %lsuser% --password=%lspass% -D %lsdb% < LoginInstall.sql
echo ЋЎ*®ў«пҐ¬ в*Ў«Ёжг Accounts
%mysqlPath% -h %lshost% -u %lsuser% --password=%lspass% -D %lsdb% < ../sql/accounts.sql
echo ЋЎ*®ў«пҐ¬ в*Ў«Ёжг GameServers
%mysqlPath% -h %lshost% -u %lsuser% --password=%lspass% -D %lsdb% < ../sql/gameservers.sql
echo CҐаўҐа *ўв®аЁ§*жЁЁ гбв**®ў«Ґ*.
echo.
pause
goto :Step2

:Step2
@cls
@title RusTeam Database Installer
echo. ==============================================================================
echo. I                                                                            I
echo. I  RusTeam Server - ЋЇҐа*жЁЁ б Ў*§®© ¤***ле бҐаўҐа* ЁЈал                     I
echo. I____________________________________________________________________________I
echo. I                                                                            I
echo. I  1 - Џ®«**п Ё*бв*«пжЁп бҐаўҐа* ЁЈал.                                       I
echo. I  2 - ЋЎ*®ўЁвм в*Ў«Ёжл ў Ў*§Ґ ¤***ле бҐаўҐа* ЁЈал.                          I
echo. I  3 - Ѓлбв஥ ®Ў*®ў«Ґ*ЁҐ ¤***ле Ё бвагЄвгал бҐаўҐа* ЁЈал.                   I
echo. I  4 - ‚л©вЁ.                                                                I
echo. I____________________________________________________________________________I
echo. I                                                                            I
echo. I  !!! ‚Ќ€ЊЂЌ€… !!!                                                          I
echo. I  ЏаЁ Ї®«*®© Ё*бв*«пжЁЁ ўбҐ ¤***лҐ ў Ѓ„ Ўг¤гв г*Ёз⮦Ґ*л !!!                I
echo. I  ЏаЁ ®Ў*®ў«Ґ*ЁЁ ўбҐ ¤***лҐ з*а®ў, Є«**®ў, §*¬Є®ў Ё Є«** е®««®ў *Ґ          I
echo. I  §*ва*ЈЁў*овбп.                                                            I
echo. I                                                                            I
echo. ==============================================================================

set full=0
set Step2prompt=x
set /p Step2prompt= ‚ўҐ¤ЁвҐ §**зҐ*ЁҐ:
if /i %Step2prompt%==1 goto fullinstall
if /i %Step2prompt%==2 goto upgradeinstall
if /i %Step2prompt%==3 goto InstallUpdate
if /i %Step2prompt%==4 goto FullEnd
goto Step2

:fullinstall
cls
set cmdline=
title “бв**®ўЄ* €Ја®ў®Ј® ‘ҐаўҐа* - Џ®«**п гбв**®ўЄ*
echo “¤*«пҐвбп бв*஥ ᮤҐа¦Ё¬®Ґ Ѓ„ бҐаўҐа* ЁЈал.
echo “¤*«по ўбҐ в*Ў«Ёжл €Ја®ў®Ј® ‘ҐаўҐа...
set cmdline=%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% ^< FullInstall.sql
%cmdline%
set full=1
echo.
echo ‚ᥠв*Ў«Ёжл ЁЈа®ў®Ј® бҐаўҐа* г¤*«Ґ*л.

:upgradeinstall
set cmdline=
echo.
if %full% == 1 (
title “бв**®ўЄ* €Ја®ў®Ј® ‘ҐаўҐа* - “бв***ў«Ёў*о...
echo ‘®§¤*о ᮤҐа¦Ё¬®Ґ €Ја®ў®Ј® ‘ҐаўҐа*.
) else (
title “бв**®ўЄ* €Ја®ў®Ј® ‘ҐаўҐа* - ЋЎ*®ў«по...
echo ЋЎ*®ў«по ᮤҐа¦Ё¬®Ґ €Ја®ў®Ј® ‘ҐаўҐа*.
)
echo.
set dest=ls
for %%i in (
accounts.sql
gameservers.sql
) do call :dump %%i
set dest=gs
for %%i in (
HWID_bans.sql
HWID_info.sql
access_levels.sql
account_data.sql
admin_command_access_rights.sql
armor.sql
armorsets.sql 
auction.sql
auction_bid.sql
auction_watch.sql
augmentations.sql
auto_chat.sql
auto_chat_text.sql
buff_templates.sql
boxaccess.sql
boxes.sql
castle.sql
doors.sql
castle_doorupgrade.sql
castle_manor_procure.sql
castle_manor_production.sql
castle_siege_guards.sql
ch_siege.sql
ch_siege_guards.sql
char_templates.sql
character_friends.sql
character_hennas.sql
character_macroses.sql
character_quests.sql
character_recipebook.sql
character_recommends.sql
character_shortcuts.sql
character_skills.sql
character_skills_save.sql
character_subclasses.sql
character_variables.sql
characters.sql
clan_data.sql
clan_privs.sql
clan_skills.sql
clan_subpledges.sql
clan_wars.sql
clanhall.sql
clanhall_functions.sql
class_list.sql
cursed_weapons.sql
dimensional_rift.sql
droplist.sql
enchant_skill_trees.sql
etcitem.sql
fish.sql
fishing_skill_trees.sql
four_sepulchers_spawnlist.sql
forums.sql
games.sql
global_tasks.sql
grandboss_data.sql
grandboss_list.sql
helper_buff_list.sql
henna.sql
henna_trees.sql
heroes.sql
imp_tomb_spawnlist.sql
items.sql
items_delayed.sql
itemsonground.sql
kill_data.sql
locations.sql
lvlupgain.sql
mapregion.sql
merchant_areas_list.sql
merchant_buylists.sql
merchant_lease.sql
merchant_shopids.sql
merchants.sql
minions.sql
mods_wedding.sql
mt_records.sql
npc.sql
npcskills.sql
offline_traders.sql
offline_traders_lists.sql
olympiad_nobles.sql
olympiad_nobles_eom.sql
party_match.sql
pets.sql
pets_stats.sql
pledge_skill_trees.sql
posts.sql
raidboss_points.sql
raidboss_spawnlist.sql
raidboss_status.sql
random_spawn.sql
random_spawn_loc.sql
record.sql
server_variables.sql
seven_signs.sql
seven_signs_festival.sql
seven_signs_status.sql
siege_clans.sql
siege_door.sql
skill_learn.sql
skill_spellbooks.sql
skill_trees.sql
spawnlist.sql
teleport.sql
topic.sql
walker_routes.sql
weapon.sql
zone.sql
zone_vertices.sql
) do call :dump %%i
echo.

if %full% == 1 (
echo €Ја®ў®© ‘ҐаўҐа гбв**®ў«Ґ*.
) else (
echo €Ја®ў®© ‘ҐаўҐа ®Ў*®ў«Ґ*.
)
goto :InstallUpdate

:dump
set cmdline=
if /i %full% == 1 (set action=Installing) else (set action=Upgrading)
REM echo %action%
echo %action% %~nx1
set cmdline=%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% ^< ..\sql\%1
%cmdline%
goto :eof

:forced_updates
goto :eof

:InstallUpdate
call :forced_updates

@cls
@title ЋЎ*®ў«Ґ*ЁҐ бвагЄвгал ¤***ле
echo.
echo.
set expprompt=x
set /p expprompt=ЋЎ*®ўЁвм бвагЄвгаг Ў*§л ¤***ле бЄаЁЇв*¬Ё Ё§ sql\Updates\ : (y) „* Ё«Ё (n) ЌҐв?
if /i %expprompt%==n goto end
if /i %expprompt%==г goto :doupdate

:doupdate
echo.‚® ўаҐ¬п ®Ў*®ў«Ґ*Ёп ¬®Јгв ў®§*ЁЄ*вм ®иЁЎЄЁ ў бўп§Ё б 㦥 гбв**®ў«Ґ**л¬Ё ®Ў*®ў«Ґ*Ёп¬Ё. 
cd "..\sql\Updates\1.2 to 1.3\"
echo @echo off> temp.bat
for %%i in (*.sql) do (
	echo echo Update %%i >> temp.bat
	echo %mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% ^< %%i >> temp.bat
)
call temp.bat
del temp.bat
cd ..\..\..\tools
goto :end

:end
echo.
echo “бв**®ўЄ* §*ўҐаиҐ**.
echo.
pause

:FullEnd


Добавлено через 11 минут
Ну в-общем, все решилось.
Я юзал командную строку для запуска php-скрипта. Теперь любой вывод в окно терминала сопровождаю командой
PHP
1
mb_convert_encoding($str, 'cp866', 'cp1251')
выводит отлично.
gecata, спасибо, что откликнулся
0
Эксперт WindowsАвтор FAQ
18014 / 7715 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
06.09.2012, 11:32 5
Сохранить BAT-файл в кодировке OEM-866 (например программа AkelPad умеет). См. Скриншот.
(при этом параметр кодировки окружения консоли менять не нужно)
Миниатюры
Русский язык в командной строке  
0
1 / 1 / 0
Регистрация: 12.11.2009
Сообщений: 109
06.09.2012, 11:35  [ТС] 6
За ответ спасибо, но уже сам разобрался в посте выше
0
Эксперт WindowsАвтор FAQ
18014 / 7715 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
06.09.2012, 11:45 7
Ну если посредством самого батника - то именно так: сохраняем сам файл CMD в 866 кодировке. Никогда не подведет. Действие аналогичное "mb_convert_encoding".

А если из другого приложения (например, MS Visual Studio), то можно настроить конкретный экземпляр вызываемой им консоли под шрифт Lucida Console. Для этого нужно задать в том компиляторе команду на паузу консоли (pause). Затем правый клик по заголовку окна и меню "Свойства", "Шрифт".
При этом глобальная настройка шрифта для консольных приложений останется прежней (она настраивается через пункт "Умолчания"). В реестре на это отведены отдельные ветки.
1
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 3
08.09.2012, 16:50 8
ссылка удалена
перекодирует из WIN в DOS. то что тебе нужно.

 Комментарий модератора 
Выкладывание ехе на обменники неприемлемо.
Указывайте источник или исходный код.
0
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 3
13.09.2012, 19:46 9
Выкладывание ехе на обменники неприемлемо.
Указывайте источник или исходный код.
хорошо.
0
Эксперт WindowsАвтор FAQ
18014 / 7715 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
13.09.2012, 22:23 10
Цитата Сообщение от krow7 Посмотреть сообщение
Батник, а словечки-то все русские
мб натолкнет на мысль, меня лично нет
Код
“Є*¦ЁвҐ *Ё¦Ґ Ї*а*¬Ґвал ў*襩 Ў*§л ¤***ле
Ну тут все ясно - сохранено в 866 кодировке. Что я и советовал сделать.
0
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
21.08.2013, 13:53 11
Bash
1
2
chcp 1251
echo Русский текст
Выводит абракадабру?
1.bat
Bash
1
2
3
4
@echo off
set a=%~1
set b=%~2
echo %a% %b%

Bash
1
2
C:\>1 Русский текст
Русский текст
1
Модератор
Эксперт JS
5237 / 2110 / 416
Регистрация: 06.01.2013
Сообщений: 4,842
21.08.2013, 13:58 12
Что это такое, и причем здесь тонкости языка?
0
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
21.08.2013, 14:16 13
Ну, прикол в том, что там даже кодировку менять не надо. К тому же я сам только что до этого догадался и очень обрадовался. На радостЯх выложил сюды.
Хотя да, лучше перенести в "Русский текст в консоли"
Кстати еще вариант.
Bash
1
2
set /p x=%~1 >nul
echo %x%
Добавлено через 15 минут
Т.е. если русский текст записать в переменную, а потом вывести, то он выйдет без закорючег.
Bash
1
2
@set a=Русский текст
@echo %a%
0
Модератор
Эксперт JS
5237 / 2110 / 416
Регистрация: 06.01.2013
Сообщений: 4,842
21.08.2013, 14:43 14
Ты сохраняешь файл по-умолчанию в кодировке 866. Просто сделай
Bash
1
echo Русский текст
и удивись))

Добавлено через 55 секунд
А если у тебя 1251, тогда в начало нужно chcp 1251
1
2 / 2 / 0
Регистрация: 17.10.2013
Сообщений: 62
18.10.2013, 15:38 15
Исходные данные:
Сохраняю батник в 866-кодировке. Необходимо, чтобы батник писал в файл (делаю посредством echo) русские символы. Впоследствии этот файл открывается (обязательно!) блокнотом, как я понимаю в кодировке 1251.

В результате:
Меняю страницу в батнике: chcp 1251>nul. Если пишу в консоль - все ок, если в файл - там кракозябры (в блокноте; если в акелпаде, а потом сменить страницу - тоже ок).

Вопрос: что делать?
0
Эксперт WindowsАвтор FAQ
18014 / 7715 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
18.10.2013, 16:18 16
Как вариант выводить во внешний файл в кодировке Юникод:

Bash
1
cmd /U /C echo Всё ГУД>"myfile.txt"
Батник в кодировке 866.

Добавлено через 2 минуты
Еще как вариант, когда завершится работа батника, перекодировать внешний файл с 866 в другую кодировку любыми доступными средствами: Перекодировка (полезные скрипты).
Можно этим же способом:

Bash
1
cmd /U /C type "myfile_866.txt" > "myfile_Unicode.txt"
1
2 / 2 / 0
Регистрация: 17.10.2013
Сообщений: 62
18.10.2013, 16:52 17
Прикольно! Спасибо.
0
2 / 2 / 0
Регистрация: 17.10.2013
Сообщений: 62
25.10.2013, 18:11 18
А реально в myfile_Unicode.txt как-то BOM вписать?
0
Эксперт WindowsАвтор FAQ
18014 / 7715 / 892
Регистрация: 25.12.2011
Сообщений: 11,496
Записей в блоге: 16
25.10.2013, 20:10 19
Malysh-ok, реально. См. последний код в этом посте: Перекодировка текста
0
3 / 3 / 0
Регистрация: 11.12.2013
Сообщений: 7
12.12.2013, 06:27 20
По мне так это лишние телодвижения
Пользуюсь методом, который придумал еще когда небыло интернета:
Запускаем cmd и пишем "echo Русский текст>C:\1.txt"
И в файлике 1.txt на диске С ищем заветные кракозябры.
0
12.12.2013, 06:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2013, 06:27
Помогаю со студенческими работами здесь

Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Как сделать так, чтобы после некоторых манипуляций в файл выводился русский текст без сбитой...

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

Русский язык
В общем у меня такая проблема , имеется код , в котором нужно что бы выводились русские буквы...

Русский язык
Здравствуйте! Я практикуюсь в создании веб сайтов. Когда я писал сайт и тестировал его на локальном...

Русский язык
Как правильно через реестор настроить русский язык?

Русский язык
Нужно написать программу, которая исправляла бы ошибки после Ж,Ч,Ш,Щ(Ы,Я,Ю на И,А,У). Учитывая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru