Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Смена шрифта в cmd ? (http://forum.oszone.net/showthread.php?t=147273)

mitiya 06-08-2009 13:14 1187085

Смена шрифта в cmd ?
 
В cmd можно сменить цвет командой color , нельзя ли так же сменить и шрифт ?
Собственно проблема в том что по умолчанию в cmd стоит точечный шрифт и он не отображает русские буквы даже если меняешь кодовую страницу, а шрифт Lucida Console работает нормально, а поскольку приходится запускать батники на разных компах, менять там каждый раз шрифт не очень удобно.

NiOl 06-08-2009 16:55 1187282

Можно менять только кодовую страницу с помощью той же команды MODE, но сам такое практически не практиковал и строка сия была раз и навсегда прописана в AutoExec.bat еще во времена младших версий винды...
Нормального решения я не вижу, но... не примите за издевательство, однако некоторые краткие фразы на русском можно при большом желании "рисовать" табличной графикой, размещая символ в 3 строки текста. Для этого нужно заготовить шрифт и пользоваться текстовым редактором, поддерживающим вертикальные блоки (например встроенный в FAR).

ackerman2007 06-08-2009 17:17 1187302

Может тогда сначала внести изменения в реестр, а потом запустить батник? Как-то так
Код:

reg add HKCU\Console /v FaceName /t REG_SZ /d "Lucida Console" /f
reg add HKCU\Console /v FontFamily /t REG_DWORD /d 0x0000036 /f
reg add HKCU\Console /v FontSize /t REG_DWORD /d 0x000e0000 /f
reg add HKCU\Console /v FontWeight /t REG_DWORD /d 0x0000190 /f


mitiya 06-08-2009 22:40 1187593

ackerman2007, Я когда-то делал нечто подобное, но это все же не очень удобно, приходится батник перегружать, и помню было что-то что не всегда срабатывало. Так-то мне кажется должен быть способ, ведь шрифт так же как и цвет можно изменить на ходу.

mitiya 21-08-2009 11:56 1199229

а как сделать вот это:

Код:

        reg add HKCU\Console\%SystemRoot%_system32_cmd.exe /v FaceName /t REG_SZ /d "Lucida Console" /f
        reg add HKCU\Console\%SystemRoot%_system32_cmd.exe /v FontFamily /t REG_DWORD /d 0x0000036 /f
        reg add HKCU\Console\%SystemRoot%_system32_cmd.exe /v FontSize /t REG_DWORD /d 0x000c0000 /f
        reg add HKCU\Console\%SystemRoot%_system32_cmd.exe /v FontWeight /t REG_DWORD /d 0x0000190 /f

тут %SystemRoot% это не переменная, это ключ (часть ключа)

пробовал вот так:

Код:

        reg add HKCU\Console\^%SystemRoot^%_system32_cmd.exe /v FaceName /t REG_SZ /d "Lucida Console" /f
        reg add HKCU\Console\^%SystemRoot^%_system32_cmd.exe /v FontFamily /t REG_DWORD /d 0x0000036 /f
        reg add HKCU\Console\^%SystemRoot^%_system32_cmd.exe /v FontSize /t REG_DWORD /d 0x000c0000 /f
        reg add HKCU\Console\^%SystemRoot^%_system32_cmd.exe /v FontWeight /t REG_DWORD /d 0x0000190 /f

но почему-то не помогло.

Iska 21-08-2009 13:11 1199301

mitiya, если эти команды исполняются в пакетном файле, то должно помочь простое удвоение «%»:
Код:

reg add HKCU\Console\%%SystemRoot%%_system32_cmd.exe /v FaceName /t REG_SZ /d "Lucida Console" /f


sov44 14-03-2013 13:29 2110993

На Windows 7x86 на моей системе имеет место быть проблема с отображением кириллицы. http://savepic.org/3008784.png
Проблема решается путём выполнения вручную рекомендаций
Цитата:

"...В папке C:\WINDOWS\system32, есть файлы С_1252 и С_1251 скопируйте куда нибудь С_1251 - переименуйте С_1251 в С_1252 оригинальный С_1252 удалите (дав права на него) и вставьте назад в C:\WINDOWS\system32 новый перименованный С_1251 в С_1252 и перезагрузитесь."
Автоматизировать процесс через батник не удаётся в связи с тем, что C_1252.NLS занят системой. Подскажите решение по автоматизации процесса

sov44 15-03-2013 09:15 2111595

Нагуглил код, но почему-то баг не исправляется. Возможно проблемы с правами? Как придумать эмуляцию перезагрузки, чтобы реально не перезагружать компьютер? При выполнении рекомендаций в посте выше всё работает. Прошу гуру помочь с кодом.
Код:

@echo off
pushd %SystemRoot%\System32
for %%F in (C_1252.NLS C_1251.NLS) do call :STAND %%F C_1252.NLS
popd
echo.
pause
exit /b

:STAND
rem Не допускает повторной обработки:
if exist %1.bak goto :EOF
rem Устанавливает владельцем текущего пользователя:
takeown /f %1
rem Предоставляет текущему пользователю полный (F) доступ:
icacls %1 /grant %USERNAME%:(F)
rem Сохранение оригинального файла:
ren %1 %1.bak
::rem Подмена кодовой таблицы:
copy %1.bak %2


Wu-Tang 11-10-2014 02:30 2413704

а этот метод не прокатывает что ли?
Код:

Использовать кодовую страницу 1251 вместо 1252.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"
"1254"="c_1251.nls"
"1255"="c_1251.nls"



Время: 07:05.

Время: 07:05.
© OSzone.net 2001-