We use batch files for... well, pretty much everything. From simple files that simple optimize modified graphics, to the tendril-like files that build our software. For some time now, I've been using cecho.exe
from a CodeProject article so that I highlight errors and successes. And this has worked fine - as long as I was running the scripts in a console window.
However, when running batch files through Visual Studio any output from cecho.exe
simply wasn't displayed. That was something I ignored. However, over the last couple of days I've been finally setting up a CI server and have been testing both Jenkins and TeamCity and I had the exact same behaviour of blank lines when running builds in both of these tools - that I can't ignore.
I had a cursory glance through the C++ code from the original article and while it looks fine, I make no pretence of being a C++ developer. Given that the past two weeks I've been working with PHP and F#, I not in a hurry to study a 3rd extra language!
I had observed that my own console tools which used coloured output appeared perfectly well in Visual Studio, Jenkins and TeamCity so I decided I would replicate the cecho.exe
tool using C#.
Using the tool
As I'm not in a hurry to change all the batch files calling cecho
I've kept the exact same syntax (and for the time being the same annoying behaviour regarding having to manually reset colours and include line breaks).
{XX}
: colours coded as two hexadecimal digits. E.g.,{0A}
light green{color}
: colour information as understandable text. E.g.,{light red on black}
{\n}
: New line character{\t}
: Tab character{\u0000}
: Unicode character code{{
: escape character{
{#}
: restore foreground colour{##}
: restore foreground and background colour
Colours are defined as
0
: Black (black
)1
: Dark Blue (navy
,dark blue
)2
: Dark Green (green
,dark green
)3
: Dark Cyan (teal
,dark cyan
)4
: Dark Red (maroon
,dark red
)5
: Dark Magenta (purple
,dark magenta
)6
: Dark Yellow (olive
,brown
,dark yellow
)7
: Gray (silver
,light gray
,light grey
)8
: Dark Gray (gray
,grey
,dark gray
,dark grey
)9
: Blue (blue
,light blue
)A
: Green (lime
,light green
)B
: Cyan (aqua
,light cyan
)C
: Red (red
,light red
)D
: Magenta (fuschia
,magenta
,light magenta
)E
: Yellow (yellow
)F
: White (white
)
The names in brackets are alternatives you can use for understandable text.
Note
For backwards compatibility, this program behaves the same way as the original cecho
- lines are not terminated with a carriage return and the colours are not reset. Therefore you should ensure you include {#}
or {##}
and {\n}
at the end of your statements.
Or of course, just modify the source to do this automatically if you don't need compatibility.
Samples
This first example uses the shorthand notation to change ERROR:
into red.
cecho {0c}ERROR:{#} Signing failed for program1.exe, retrying{\n}
This example uses named colours instead of hex codes.
cecho This {yellow on teal}word{##} is yellow on a teal background{\n}
This final example prints out an extended character.
cecho {\u2593}
Getting the source
The source code this tool is available on our GitHub page.
All content Copyright (c) by Cyotek Ltd or its respective writers. Permission to reproduce news and web log entries and other RSS feed content in unmodified form without notice is granted provided they are not used to endorse or promote any products or opinions (other than what was expressed by the author) and without taking them out of context. Written permission from the copyright owner must be obtained for everything else.
Original URL of this content is https://www.cyotek.com/blog/colorecho-adding-colour-to-echoed-batch-text?source=rss.