1 (изменено: alexii, 2014-05-16 00:42:03)

Тема: CMD/BAT: Цветной текст в echo без FINDSTR

Приветствую! Предыстория такая. Решил я написать .BAT для склейки нескольких .TS-файлов в один .MP4 прогой FFMPEG, это, собственно, к делу не относится, просто когда я увидел, что во время своей работы FFMPEG выводит всякие инфо- или error- мессаги разным цветом (ERROR'ы — красным, инфо — голубым с желтым), я чё-то подумал, что было бы прикольно также "расцветить" и мессаги команды ECHO (я, конечно, видел цветной вывод в консоль и раньше, просто как-то эта идея тогда меня не занимала)…. Немножко порыл в этом направлении и понял (не знаю, правильно ли, но во всяком случае понял именно так), что есть 2 способа:

(1). Какое-то извращение, основанное на использовании команды FINDSTR, (топик на этом форуме). Как я понял, тут фактически выводится не текст, а имена файлов. Ну, короче, мне этот способ не нравится во-1х, так сказать, "идеологически" из-за его извратности, и во-2х из-за создания временных файлов (пусть даже они потом и удаляются, я временные файлы тоже как-то не приемлю)

(2). Способ с драйвером ANSI.SYS, его надо прописать в каком-то конфиг-файле, потом запускать COMMAND.COM (не CMD.EXE!) и тогда можно использовать нативную фичу DOS по расцветке текста и управлению курсором (ссылка 1, ссылка 2). Но насчет этого способа сказано, что тут не будут работать консольные проги, не работающие в DOS (т.е. если какая-то консольная прога работает в CMD.EXE и не работает в DOS, то и тут она не запустится). Это я вроде понял, но не совсем понял вот что: такой COMMAND.COM в WinXP имеет такие же отличия от CMD.EXE какие имеют место между DOS из WIn98 и CMD.EXE или нет? Я сейчас уже не помню, чем они там различаются, первое что вспомнилось, ну, например, в DOS есть команда CHOICE, в CMD её нет, там вместо CHOICE используют SET /P, которого в свою очередь нет в DOS итп.

* * *

Вообще, есть ли какой-то простой способ выводить из "батников" в окно CMD разноцветный текст (т.е. без извратов), может быть, для этого есть какая-то сторонняя утилита (ну типа того, как в "виндовых" "ресурс-китах" есть SLEEP.EXE для паузы, CLIP.EXE для копирования вывода в буфер итп.)?

2

Re: CMD/BAT: Цветной текст в echo без FINDSTR

Приемлемых вариантов я вижу два:

3

Re: CMD/BAT: Цветной текст в echo без FINDSTR

Почитайте ветку на stackoverflow - http://stackoverflow.com/questions/4339 … batch-file. Определенно, авторство идеи (1) с findstr принадлежит участникам обсуждения. Там же есть несколько альтернативных решений, включая сторонние утилиты (cmdcolor) и powershell.

( 2 * b ) || ! ( 2 * b )

4 (изменено: Arigato, 2014-05-24 12:38:54)

Re: CMD/BAT: Цветной текст в echo без FINDSTR

Можно воспользоваться сторонними утилитами, к примеру, этой: http://forum.script-coding.com/viewtopic.php?pid=83272
Плюсы: не создаются временные файлы, куча других полезных фич.
Минусы: вместе с батником надо распространять еще и небольшой exe-шник, обращение к утилите занимает некоторое время, что немного снижает общую производительность.