Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Цвет шрифта в командной строке


Автор: korob2001 30.1.2004, 14:32
Всем привет!
Пытаюсь создать на Perl утилитку под Windows, что-то наподобие grep'a в Unix. Впринципе почти всё готово, но хотелось бы немного придать ей вида, затем скомпилить код в exe'шник.

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

Пробовал искать в справке, нашёл команду cmd, вот что там написано:

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

Код

Значение        |    Цвет
================|==========================
0               |    Черный
1               |    Синий
2               |    Зеленый
3               |    Голубой
4               |    Красный
5               |    Сиреневый
6               |    Желтый
7               |    Белый
8               |    Серый
9               |    Светло-синий
A               |    Светло-зеленый
B               |    Светло-голубой
C               |    Светло-красный
D               |    Светло-сиреневый
E               |    Светло-желтый
F               |    Яркий белый


Пробую ввести следующую команду:
cmd \t:0x4

но ничего не выходит. Что не так?

Заранее благодарен.

Автор: December 31.1.2004, 02:07
color - меняет цвет всего текста в окне, напр.
color 3
но это, похоже, не то...

Автор: korob2001 31.1.2004, 18:37
Цитата
но это, похоже, не то...

Впринципе не то, но лучше чем ничего. Конечно желательно иметь возможность менять цвет каждого символа, но как я понимаю это не так просто.

Лично я встретил утилитку для сканирования локальных дисков Maxtor на предмет повреждений. Там и увидел такую красоту.

Автор: Гость_December 31.1.2004, 21:14
Цитата
Лично я встретил утилитку для сканирования локальных дисков Maxtor на предмет повреждений

Хм, я неделю назад этой утилиткой пользовался smile.gif
Только сделана она не на Perl, как ты понимаешь.

Автор: Monty 31.1.2004, 21:50
korob2001, я давно в школе еще так баловался на барсике smile.gif ..... неужели такого нет в Perl'е ?! smile.gif

Автор: December 1.2.2004, 01:52
korob2001
Возможно, тебе поможет ещё вот что: запускаешь командную строку, правый клик на заголовке, выбираешь "по умолчанию", цвета - дальше увидишь.

Автор: Monty 1.2.2004, 01:56
Цитата(December @ 31.1.2004, 23:52)
korob2001
Возможно, тебе поможет ещё вот что: запускаешь командную строку, правый клик на заголовке, выбираешь "по умолчанию", цвета - дальше увидишь.

December, он хочет так smile.gif

Автор: korob2001 1.2.2004, 02:45
Цитата
Только сделана она не на Perl, как ты понимаешь.

Понимаю ;) Да, только вопрос был не о том. Perl здесь вообще не причём.

-------------------------------------------------------------------------------------------------
Вопрос № 1:
==========
Подскажите пожалуйста, как в командной строке можно изменить цвет текста?

Вопрос № 2:
==========
Пробую ввести следующую команду:
cmd \t:0x4

но ничего не выходит. Что не так?
-------------------------------------------------------------------------------------------------
Вопроса о том, на чём сделана утилитка небыло, хотя мне что-то подсказывает, что она сделана на языке низкого уровня, например Assembler.
Цитата

я давно в школе еще так баловался на барсике  ..... неужели такого нет в Perl'е

Я на барсике не баловался. Если бы меня итересовал Perl или барсик, я бы задал этот вопрос в соответствующем разделе.

Цитата

он хочет так

Вы абсолютно правы.

Автор: December 1.2.2004, 03:19
Цитата
Пробую ввести следующую команду:
cmd \t:0x4
Ну, вообще, слэш должен в другую сторону стоять... Но у меня тоже ничего не получилось, более того, заглючилось серьёзно.

Автор: korob2001 14.2.2008, 00:29
Извиняюсь за столь поздний ответ. Воспользовался поиском и случайной наткнулся на эту тему, где впринципе к конечному результату мы так и не пришли. Вобщем помог мне тогда модуль из стандартного дистрибутива Perl,  Win32::Console.
Вот пример, кода на Perl, который меняет цвета каждого символа поотдельности в командной строке:

Код

#!/usr/bin/perl -w
use strict;
use Win32::Console;
use Time::HiRes;
use constant PERCENT_100 => 1000;  # 100%

my $console = new Win32::Console(STD_OUTPUT_HANDLE);
$console->Cls();

for (1..PERCENT_100) {
     my $posx = 10;
     my $posy = 5;
     $_ = "$_ / " . int($_ / PERCENT_100 * 100) . "%";
     for my $color ($FG_YELLOW, $FG_GREEN, $FG_LIGHTRED, $FG_BLUE, $FG_WHITE) {
           my $attr = (chr($color|$BG_BLACK) x length($_));
           $console->WriteAttr($attr,$posx,$posy);
           $console->WriteChar($_, $posx, $posy);
           $posx += 5;
           $posy += 2;
     }
     Time::HiRes::sleep(0.1);
}

$console->Display();


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)