В то время как здесь широко объясняется «Как отображать разные цвета в командной строке Windows»
Как отображать разные цвета в командной строке Windows
он не работает внутри цикла for, как уже заметил chersun:
@JensA.Koch Это потрясающе.Но у меня есть проблема с этим, работающим в цикле for.Только первое эхо будет правильно окрашено, после чего все остальные будут просто печатать все escape-символы вместо того, чтобы что-либо менять.Пакетный файл предназначен для архивирования каждой папки в отдельный архив, пытаясь вывести имя папки жирным шрифтом, после чего следует стандартный вывод архиватора с фильтрацией findstr.- chersun 22 апреля '18 в 21: 36
Я открываю новый вопрос, поскольку у меня недостаточно репутации, чтобы писать сообщения в предыдущем.
Единственное решение, которое я нашел, было включить последля команды (внутри блока do) фиктивный CMD / C Echo / в качестве обходного пути.
Есть ли лучшие способы?
TIA
Редактировать: Спасибо за комментарии, вот идет пакетный файл
из блока, цвета идут хорошо.проблема идет с ВЫБОРОМ, если удаленная проблема исчезает.Решение состоит в том, чтобы включить «пустое» CMD
Ответ Y на выполнение, чтобы увидеть неудачный вывод
@ECHO OFF
for /F %%a in ('echo prompt $E ^| cmd') do set "_esc=%%a"
set _redon=%_esc%[91m
set _greenon=%_esc%[92m
set _coloff=%_esc%[0m
SET _free=1000
SET _used=2000
ECHO %_redon%!_used!%_coloff% / %_greenon%!_free!%_coloff%
SETLOCAL EnableDelayedExpansion
FOR /L %%A IN (1,1,5) DO (
CHOICE /C YN /T 5 /D N /N /M "Press Y to process %%A"
IF "!ERRORLEVEL!"=="1" (
SET _free=1000
SET _used=2000
REM needed CMD to return proper behaviour
REM CMD /C echo/
ECHO %_redon%!_used!%_coloff% / %_greenon%!_free!%_coloff%
)
)
PAUSE
EXIT
Спасибо @Stephan за украшение кода.