Показать полную графическую версию : Esc-последовательности в BAT-файлах (ansi.sys)
AndreyY89
15-11-2008, 17:22
Всем привет!
Есть проблема с программированием BAT-файла. Нужно сделать красивое оформление - цвета, текст по центру экрана и пр. Делается это с помощью Esc-последовательностей (описаны например здесь: http://www.opennet.ru/docs/BSD/pascal/syscons/ansi.html). Чтобы они обрабатывались, нужна поддержка драйвера ANSI.SYS. В Win98 он вроде как использовался по умолчанию, но в WinXP изначально он не подключен. Тем не менее, этот файл есть в Windows\System32. Инструкция по подключению везде одна и та же, вот например: http://www.windowsnetworking.com/kbase/WindowsTips/WindowsXP/UserTips/CommandPrompt/CommandInterpreterAnsiSupport.html. Но проблема в том, что ничего не получается. Сделал всё, как написано - вроде драйвер подключился (хотя как проверить?). Но при запуске BAT, где есть такие Esc-последовательности, никакой реакции: просто выводит на экран текст "Esc[...". В чём проблема - не понимаю. В методичке, которую дали в универе, написано примерно то же самое. Но не работает... Может кто-нибудь подскажет, в чём именно проблема, и как выйти из ситуации?
AndreyY89,
http://search.microsoft.com/Results.aspx?qsc0=0&q=ansi.sys&mkt=ru-RU&FORM=QBME2&l=2&x=0&y=0
Petya V4sechkin
15-11-2008, 18:12
AndreyY89, вам нужен .bat или .cmd?
Потому что в .cmd цвет задается командой Color.
AndreyY89
15-11-2008, 18:16
Н-да... Ответ от MS не утешил: cmd не поддерживает этот драйвер :(
А может есть какие-нибудь альтернативы? Просто батники по умолчанию запускаются именно через cmd, а не через command.com...
Кстати, если уж через command.com - как в батнике писать Esc? На $e не реагирует, как они написали в примере - только при вызове prompt.
Petya V4sechkin, color задаёт цвет фона и цвет текста. Это хорошо, но этого мало. А ANSI.SYS поддерживает ещё кучу всего интересного.
AndreyY89
15-11-2008, 19:02
Попробую использовать Norton Batch Enhancer в качестве альтернативы. Вроде он работает независимо.
Denis-reut
24-01-2012, 21:19
Доброго времени суток. Сколько не пробовал - не получается средствами командной строки (bat- или cmd-файлы) изменить цвет/размер шрифта или цвет фона; пытался сохранять результат в *.txt и *.rtf, при этом готовил исходник в форматированном виде, чтобы в исполняемом файле сохранились необходмые мне параметры.
Например, bat-файл диагностики сетевого оборудования - хотелось бы, чтобы в логе положительный (+OK+) и отрицательный (-ALARM!!!-) результаты отличались размером и цветом шрифта. У кого-то это получалось?
@ECHO OFF
date /T >D:\Diagnostic\%date%.rtf
time /T >>D:\Diagnostic\%date%.rtf
echo Server >>D:\Diagnostic\%date%.rtf
echo 192.168.1.1>>D:\Diagnostic\%date%.rtf
C:\windows\system32\ping 192.168.1.1 -n 2
if not errorlevel 1 echo +OK+ >>D:\Diagnostic\%date%.rtf
if errorlevel 1 echo -ALARM!!!- >>D:\Diagnostic\%date%.rtf
echo ******************* >>D:\Diagnostic\%date%.rtf
Что касается команды color, то, насколько я знаю, она меняет цвет в шрифте/фоне окна командной строки (то есть только при вызове cmd.exe)
Начнём с конца…
Что касается команды color, то, насколько я знаю, она меняет цвет в шрифте/фоне окна командной строки (то есть только при вызове cmd.exe) »
Она может применяться и непосредственно в пакетном файле. Минус её в том, что меняются атрибуты открытой консоли в целом.
Я рекомендую попробовать внешнюю утилиту «EchoX.exe» из комплекта Bill Stewart's Site - Shell Scripting Toolkit (http://www.westmesatech.com/sst.html). Она заметно расширяет возможности встроенной команды «echo» (пример раз (http://forum.oszone.net/post-1408396.html#post1408396), пример два (http://forum.oszone.net/post-1349875.html#post1349875)).
Либо перейти на PowerShell — там сие поддерживается изначально.
У кого-то это получалось? »
Угу. Можно и ANSI.SYS задействовать (http://forum.oszone.net/post-1408635.html#post1408635). Единственное, что мне не нравится в этом подходе — inline директивы вносят лишнюю сумятицу в строки. Зато в комплекте.
P.S. Если хотите цвет именно в файле — делайте вывод в HTML.
Denis-reut
28-01-2012, 20:10
Добрый вечер. Использование html-страниц - неплохая идея! Сейчас попробую...
ansicon 1.50 спасет отца любителей ESC последовательностей :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.