как отобразить цветной вывод для строки при вызове cmd / c из cygwin - PullRequest
0 голосов
/ 04 июня 2018

Я хотел бы отображать цветной вывод только для неполной линии.
Ниже приведен код, который отлично работает при запуске на cygwin:
echo -e '\e[0;31m' "Something failed"'\e[0m'
Он правильно отображает вывод красным цветом.


Теперь я хотел бы вызвать приглашение Windows cmd и сгенерировать тот же вывод.
Я хотел бы сделать то же самое, используя опцию "cmd / c".Но это не работает.
Ниже приведен код того, чего я пытаюсь достичь при вызове из cygwin.

cmd /c echo -e '\e[0;31m' "Something failed"'\e[0m'
Он не производит цветной вывод.Я также попытался использовать bin / echo, но он по-прежнему не отображает вывод красного цвета.

Есть ли способ, с помощью которого я могу добиться вывода красного цвета, вызывая cmd / c из cygwin?

1 Ответ

0 голосов
/ 04 июня 2018

Да, есть способы, но ваш код не может работать, так как echo -e .. будет выполняться с помощью cmd.exe, а Windows-версия echo не поддерживает -e.

Для этого вы можете создать свою собственную echo-e функцию или командный файл.

echo-e.bat из эквивалент echo -e в Windows?

@echo off
set "arg1=%~1"
set "arg1=%arg1:\x=0x%"
set "arg1=%arg1:\e=0x1B%"
forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%arg1%"

Тогда вы можете использовать его как

cmd /c echo-e "\e[0;31m Something failed\e[0m"

Примечание:
Это работает, только когда вы запускаете это из мятного окна.
Когда ваш кодзапуск в cmd-окне, запуск сценария cygwin, запуск cmd /c echo-e ..., он будет работать только в win10 с поддержкой vt100

...