lazalu68
@lazalu68
Salmon

Как изменить цвет строки в CMD?

Сам я ни черта не понимаю в cmd, поэтому искал решение в интернетах.

Насколько я понял, color для этого не используют т.к. он меняет цвет во всей сессии. Зато используют какой-то хак с командой findstr, которой можно явно указать цвет выводимого ею сообщения.

Вот что нарыл:

:write
  setlocal
  :write1
  set "tempFolder=%TEMP%\%~n0.%time:~-2%.%random%"
  md "%tempFolder%" 2>nul || goto write1
  pushd %tempFolder%
  set /p .=.<nul>"%~2"
  findstr /a:%~1 /c:"." /s "%~2"
  popd
  rd /s /q "%tempFolder%" 2>nul
endlocal & exit /b

:writeLn
  call :write %1 "%~2"
  echo:
exit /b


Эта фигня работает почти как надо, за исключением того, что добавляет двоеточие и точку в конце. То есть вызов call :write 0A "My Charona" вернет My Charona:., где My Charona и двоеточие будут зеленого цвета, а точка - дефолтного.

Некоторые строчки кода для меня почти ясны (findstr /a:%~1 /c:"." /s "%~2"), некоторые вообще черная магия (set /p .=.<nul>"%~2").

Можно ли как-то избавиться от двух последних символов в строке, которую выводит findstr?

Кстати, да: если из кода убрать все операции с директориями, функционал не меняется абсолютно, все работает так же.
  • Вопрос задан
  • 4864 просмотра
Решения вопроса 1
wisgest
@wisgest
Не ИТ-специалист
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@skazi_premiere
Верстаем как умеем ;) HTML/CSS/JS
Вот так не вариант ? ef1963e851954a5c8112cbc23c1bb387.png662c74dcb6e4422bb586a664b3ba4da7.png
Ответ написан
@res2001
Developer, ex-admin
set /p .=.<nul>"%~2" - записывает в файл "%~2" точку без перевода строки.
Стандартный вариант echo .>"%~2" - добавит в конце файла символы перевода сроки/возврата каретки.
findstr /a:%~1 /c:"." /s "%~2" - ищет в файле "%~2" точку и выводит ее заданным в "%~1" цветом. Благодаря наличию ключа /s выводится имя файла, в котором найдена точка, а предыдущей командой создается файл с именем равным искомой фразе, т.е. создается эффект вывода фразы.
От точки можно избавиться, заменив ее на пробел, а вот от двоеточия, думаю, что не избавиться.
Вообще это не выглядит нормальным способом вывода. Если очень хочется цветных буковок в батнике, то посмотрите в сторону nircmd или аналогичных многофункциональных утилит для командной строки, возможно там есть такая фишка.
Ответ написан
honor8
@honor8
Принципы быстродействия VBA в описании
win10 сборки 16275 и выше позволяют использовать escape-последовательности
https://gist.github.com/mlocati/fdabcaeb8071d5c75a...

тетрис в bat https://habr.com/ru/post/654735/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы