Странные управляющие символы из Gradle в Windows 10

В консоли я получаю «причудливый» вывод из Gradle при запуске из CMD с момента перехода на Windows 10.

[0K
[0K
[2A[1m<==-----------> 18% EXECUTING [9s][m[34D[1B[1m> :compileScala[m[15D[1B[2A[1m<==-----------> 18% EXECUTING [10s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [11s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [12s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [13s][m[35D[2B[2A[1m<==-----------> 18% EXECUTING [14s][m[35D[2B[2Athere were four feature warnings; re-run with -feature for details
four warnings found

Я предполагаю, что это своего рода дикие управляющие символы, когда Gradle пытается разумно раскрасить свой вывод, а Windows интерпретирует это неправильно. PowerShell и SBT работают нормально, но копирование настроек «Свойства» консоли из PowerShell в CMD не помогает.

Кто-нибудь решил это?

ОБНОВЛЕНИЕ 2018-01-28 Это также происходит в моей установке Jenkins/Alpine/Docker поверх OSX/macOS/еще чего-то. Уже не только окна.

... но ... этого не происходит в ноутбуке Surface, работа которого дала мне ... супер странно. Whatevs gradlew --console=plain у меня отлично работает.


person pal    schedule 25.07.2017    source источник
comment
CMD восстанавливает исходный режим консоли при запуске внешней программы, что технически правильно. По-видимому, PowerShell этого не делает, поэтому экранирование виртуального терминала должно работать, если вы запускаете CMD из PowerShell, пока кто-нибудь не исправит эту ошибку в PowerShell.   -  person Eryk Sun    schedule 25.07.2017
comment
Основная ошибка здесь в Gradle. Если это зависит от поддержки виртуального терминала, то он должен включить его в консоли, получив текущий режим через GetConsoleMode, затем ИЛИ во флаге ENABLE_VIRTUAL_TERMINAL_PROCESSING, и установить новый режим через SetConsoleMode. Если эта операция не удалась, режим VT не поддерживается. Либо это более старая версия Windows, либо установлен вариант использования устаревшей консоли.   -  person Eryk Sun    schedule 25.07.2017


Ответы (3)


Я предполагаю, что вы могли бы передать --console plain в командной строке gradle, чтобы отключить богатую консоль, которая, вероятно, является причиной «прикольных» символов.

https://docs.gradle.org/current/userguide/gradle_command_line.html

person lance-java    schedule 25.07.2017
comment
Gradle 2.6 в powershell под win 10 работает правильно, а gradle 4.1 - нет. - person Καrτhικ; 15.12.2017
comment
Да, есть похожие странности, когда я запускаю Gradle через git bash в Windows. Gradle отлично работает в обычном терминале DOS в Windows. Как я уже сказал, вы можете использовать --console plain, чтобы остановить специальные символы - person lance-java; 15.12.2017
comment
кажется, это работает. вывод намного лучше, но я не смогу увидеть процент %, используя экспорт TERM = cygwin, как Марк, упомянутый ниже, кажется, дает лучшие результаты - person Ali; 15.11.2020

Я видел, как это происходит в оболочке Git BASH, которая является частью Git для Windows. Для меня решением было установить TERM на cygwin. Это исправило вывод без каких-либо проблем с обработкой возврата.

export TERM=cygwin

Я также пробовал xterm, xterm-256color, ansi и vt100. Термин cygwin был для меня самым надежным. Сейчас я запускаю \usr\bin\bash.exe в терминале Windows, и до сих пор это работало хорошо.

person Mark McClelland    schedule 08.10.2020
comment
Кажется, это работает, хотя я не понимаю логики того, почему среде Windows Terminal нужен CYGWIN TERM. Думаю, одна из загадок cygwin kruft. - person xpusostomos; 13.10.2020
comment
если вы используете git bash в окнах. отредактируйте файл в git\etc\bash.bashrc и добавьте строку export TERM=cygwin в конец файла, чтобы вам не приходилось вводить эту команду каждый раз при запуске терминала - person Ali; 15.11.2020
comment
Предложение @Ali, приведенное выше, сработало для меня, когда я добавил его в файл .bash_profile в моем домашнем каталоге Windows. - person Grant Lay; 14.01.2021
comment
@xpusostomos, вероятно, пытается сделать это: en.wikipedia.org/wiki/ANSI_escape_code - person Ray Tayek; 21.05.2021

Чтобы исправить это в Windows 10, создайте новый ключ DWORD HKEY_CURRENT_USER\Console\VirtualTerminalLevel со значением 1. См. это для получения дополнительной информации.

person Jerry    schedule 13.12.2018