БлогNot. Как создать batch-файл и разные цвета в консоли из командного файла

Как создать batch-файл и разные цвета в консоли из командного файла

Сначала первый вопрос из заголовка, который мне на минувшей и этой неделе неоднократно задавали.

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

Для проверки нажимаем комбинацию клавиш Win + E, открывается окно "Мой компьютер". Нажимаем левый Alt, в верхнем меню переходим Вид - Параметры и выбираем вкладку Вид, внизу списка убираем галочки как на рисунке:

Настройки вида папок
Настройки вида папок

Жмём "Применить", "Сброс вида папок", "ОК".

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

Создание текстового документа
Создание текстового документа

Вместо "Новый текстовый документ.txt" вводим имя командного файла, например, "my.bat":

my.bat
my.bat

Соглашаемся с предупреждением о смене типа файла.

Если у Вас ещё не установлен Notepad++ - сделайте это, выбрав при установке русский язык и оставив все остальные настройки по умолчанию. Редактор, в том числе, добавит в меню, вызываемое нажатием правой кнопки мыши на файлах, команду "Edit with Notepad++", которой можно пользоваться для редактирования. Подсветка синтаксиса, подсказки, автозапоминание для всех форматов. По умолчанию в современных версиях Notepad++ принята кодировка Юникода UTF-8, если хотите, чтобы она была и в консоли (например, batch-скрипт использует кириллицу), установите кодировку для консоли в самом файле:

Команда chcp 65001 - это и есть установка UTF-8 для консоли
Команда chcp 65001 - это и есть установка UTF-8 для консоли

Потом пишите программу. Если она не требует аргументов комадной строки, запускать batch-файл можно как любое приложение двойным кликом мыши по файлу в папке, если эти аргументы нужны, поможет, например, командная строка. Нажимаем в Windows комбинацию клавиш Win + R, вводим команду cmd , жмём Enter, переходим в нужную папку, где находится файл, например:

Скрипт обработки любого допустимого количества аргументов командной строки и его выполнение в консоли Windows
Скрипт обработки любого допустимого количества аргументов командной строки и его выполнение в консоли Windows

Здесь мы запустили из выбранной папки командный файл my с четырьмя аргументами командной строки - abc, def, gh и 999.

На скрине также показан способ обработки bat-файлом любого количества параметров - в нашем случае он просто выводит очередной параметр (аргумент командной строки, отделённый хотя бы одним пробелом) с помощью echo и затем сдвигает строку параметров командой shift, чтобы снова работать со значением %1.

Сначала приведём простую учебную "оболочку" для стандартной команды color, которую можно сохранить под именем colors.bat и запустить из командной строки или файл-менеджера, например, так:

colors 1 E

Мы увидим, что будет, если в консоли отдать команду

color 1E

Вот листинг файла colors.bat :

@echo off
chcp 65001 >nul
cls
title Цвета консоли
if '%1'=='' goto error1
if '%2'=='' goto error1
for %%a in (0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F) do if %%a==%1 goto ok1
goto error2
:ok1
for %%a in (0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F) do if %%a==%2 goto ok2
goto error3
:ok2
if '%1'=='%2' goto error4
:start
color %1%2
echo Вот что вышло командой color %1%2
goto end
:error1
echo Запускайте программу с двумя аргументами от 0 до F, например
echo mycolors 2 d
goto end
:error2
echo Неверный аргумент %1
goto end
:error3
echo Неверный аргумент %2
goto end
:error4
echo Аргументы 1 и 2 должны быть разными, иначе color не работает
:end
echo Нажмите Enter для выхода
pause >nul
title %comspec%
color 07

С современным расширенным синтаксисом батников и escape-последовательностями, поддерживаемыми консолью Windows 10, можно сделать гораздо больше фокусов, но и код будет выглядеть куда шаманистей.

Не будем писать ещё одну "обёртку" для консольной команды color, а просто покажем основные цвета консоли, этот файл типа .bat выполнялся в актуальной сборке Windows 10 из-под файл-менеджера:

@echo off
setlocal
cls
for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
echo.
for %%1 in (0,1) do (
 for /l %%2 in (30,1,37) do (
  for /l %%3 in (40,1,47) do (
   0>nul set /p=%esc%[%%1;%%2;%%3m test %esc%[m
  )
  echo.
 )
)
Скрин вывода этого файла (фрагмент экрана)
Скрин вывода этого файла (фрагмент экрана)

Сработало и в однобайтовой кодировке batch-файла (например, Windows-1251 - кириллица Windows), и в кодировке Юникода UTF-8, при необходимости есть команда chcp.

Главное - ухитриться залимонить в bat-файл вывод символа с кодом 27, чтобы делать escape-последовательности. См. хитрый for в четвёртой строке.

02.11.2022, 16:51 [843 просмотра]


теги: windows учебное цвет софт bat

К этой статье пока нет комментариев, Ваш будет первым