cecho - small executable for showing colors in console. Fast - pure C code, no CRT, no temp files, no inefficient codepaths Compatible - imports only from ntdll.dll/kernel32.dll, uses functions available since Windows 2000 , uses the most efficient versions of string functions (from ntdll instead of kernel32 or msvcrt or god forbid, the new universal CRT) Small - 6KB (6656 bytes) size makes it good for embedded applications. Otherwise works just like regular echo with more control (newlines, tabs, unicode chars) , can detect whether you actually have a console or have redirected stdout (f.ex with ">") and strips out the colors so redirecting output works too. Spoiler: colors.bat Code: @setlocal enableextensions disabledelayedexpansion @echo off &pushd "%~dp0" @set cecho=echo if not exist cecho.exe call :x_cecho if exist cecho.exe set cecho=cecho :: :: cecho by [email protected] & anzz1 :: echo cecho by [email protected] ^& anzz1 %cecho% %cecho% {00}00 - black %cecho% {01}01 - navy %cecho% {02}02 - green %cecho% {03}03 - teal %cecho% {04}04 - maroon %cecho% {05}05 - purple %cecho% {06}06 - olive %cecho% {07}07 - silver %cecho% {08}08 - gray %cecho% {09}09 - blue %cecho% {0A}0A - lime %cecho% {0B}0B - aqua %cecho% {0C}0C - red %cecho% {0D}0D - fuchsia %cecho% {0E}0E - yellow %cecho% {0F}0F - white echo. %cecho% {00}00 {10}10 {20}20 {30}30 {40}40 {50}50 {60}60 {70}70 {80}80 {90}90 {A0}A0 {B0}B0 {C0}C0 {D0}D0 {E0}E0 {F0}F0 %cecho% {01}01 {11}11 {21}21 {31}31 {41}41 {51}51 {61}61 {71}71 {81}81 {91}91 {A1}A1 {B1}B1 {C1}C1 {D1}D1 {E1}E1 {F1}F1 %cecho% {02}02 {12}12 {22}22 {32}32 {42}42 {52}52 {62}62 {72}72 {82}82 {92}92 {A2}A2 {B2}B2 {C2}C2 {D2}D2 {E2}E2 {F2}F2 %cecho% {03}03 {13}13 {23}23 {33}33 {43}43 {53}53 {63}63 {73}73 {83}83 {93}93 {A3}A3 {B3}B3 {C3}C3 {D3}D3 {E3}E3 {F3}F3 %cecho% {04}04 {14}14 {24}24 {34}34 {44}44 {54}54 {64}64 {74}74 {84}84 {94}94 {A4}A4 {B4}B4 {C4}C4 {D4}D4 {E4}E4 {F4}F4 %cecho% {05}05 {15}15 {25}25 {35}35 {45}45 {55}55 {65}65 {75}75 {85}85 {95}95 {A5}A5 {B5}B5 {C5}C5 {D5}D5 {E5}E5 {F5}F5 %cecho% {06}06 {16}16 {26}26 {36}36 {46}46 {56}56 {66}66 {76}76 {86}86 {96}96 {A6}A6 {B6}B6 {C6}C6 {D6}D6 {E6}E6 {F6}F6 %cecho% {07}07 {17}17 {27}27 {37}37 {47}47 {57}57 {67}67 {77}77 {87}87 {97}97 {A7}A7 {B7}B7 {C7}C7 {D7}D7 {E7}E7 {F7}F7 %cecho% {08}08 {18}18 {28}28 {38}38 {48}48 {58}58 {68}68 {78}78 {88}88 {98}98 {A8}A8 {B8}B8 {C8}C8 {D8}D8 {E8}E8 {F8}F8 %cecho% {09}09 {19}19 {29}29 {39}39 {49}49 {59}59 {69}69 {79}79 {89}89 {99}99 {A9}A9 {B9}B9 {C9}C9 {D9}D9 {E9}E9 {F9}F9 %cecho% {0A}0A {1A}1A {2A}2A {3A}3A {4A}4A {5A}5A {6A}6A {7A}7A {8A}8A {9A}9A {AA}AA {BA}BA {CA}CA {DA}DA {EA}EA {FA}FA %cecho% {0B}0B {1B}1B {2B}2B {3B}3B {4B}4B {5B}5B {6B}6B {7B}7B {8B}8B {9B}9B {AB}AB {BB}BB {CB}CB {DB}DB {EB}EB {FB}FB %cecho% {0C}0C {1C}1C {2C}2C {3C}3C {4C}4C {5C}5C {6C}6C {7C}7C {8C}8C {9C}9C {AC}AC {BC}BC {CC}CC {DC}DC {EC}EC {FC}FC %cecho% {0D}0D {1D}1D {2D}2D {3D}3D {4D}4D {5D}5D {6D}6D {7D}7D {8D}8D {9D}9D {AD}AD {BD}BD {CD}CD {DD}DD {ED}ED {FD}FD %cecho% {0E}0E {1E}1E {2E}2E {3E}3E {4E}4E {5E}5E {6E}6E {7E}7E {8E}8E {9E}9E {AE}AE {BE}BE {CE}CE {DE}DE {EE}EE {FE}FE %cecho% {0F}0F {1F}1F {2F}2F {3F}3F {4F}4F {5F}5F {6F}6F {7F}7F {8F}8F {9F}9F {AF}AF {BF}BF {CF}CF {DF}DF {EF}EF {FF}FF echo. %cecho% -n {white}Checking for melted cheese -^> %cecho% {lime}OK %cecho% -n {white}Checking for extra salami -^> %cecho% {red}FAIL echo. %cecho% Unicode character {\uDA} %cecho% Escape charater {{ %cecho% {\u07 \u07}beep x2 %cecho% {\t}line #1{\n\t}line #2{\n\t}line #3 echo. %cecho% {green}print green{default} and back to initial color %cecho% {a red foreground on a white background}a red foreground on a white background{# #} and back to initial colors %cecho% {# teal}# teal %cecho% {purple yellow}purple yellow{\n}this is a colored new line %cecho% {blue on gray}blue on gray{#}{\n}this is a regular new line echo. %cecho% -n {1A}[-n] no newline on end: echo normal echo %cecho% -z {69}[-z] do not restore initial colors on end: echo normal echo %cecho% -nz {9F}[-nz] no newline / do not restore colors: echo normal echo %cecho% -n {\n}cecho version: && cecho -v echo. %cecho% -z {07} %cecho% {4#} {C#} {E#} {2#} {A#} {B#} {9#} {#} %cecho% {#E}T {#D}a {#C}s {#B}t {#A}e {#3}t {#5}h {#9}e {4F} R {CF} A {EF} I {2F} N {AF} B {BF} O {9F} W {#} %cecho% {4#} {C#} {E#} {2#} {A#} {B#} {9#} {#} echo. pause goto :eof :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :x_cecho @chcp 850 >nul 2>nul @set "0=%~f0" &powershell -nop -c $f=[IO.File]::ReadAllText($env:0)-split':bat2file\:.*';iex($f[1]); X(1) >nul 2>nul exit /b :bat2file: Compressed2TXT v6.5 $k='.,;{-}[+](/)_|^=?O123456789ABCDeFGHyIdJKLMoN0PQRSTYUWXVZabcfghijklmnpqrstuvwxz!@#$&~E<*`%\>'; Add-Type -Ty @' using System.IO;public class BAT91{public static void Dec(ref string[] f,int x,string fo,string key){unchecked{int n=0,c=255,q=0 ,v=91,z=f[x].Length; byte[]b91=new byte[256]; while(c>0) b91[c--]=91; while(c<91) b91[key[c]]=(byte)c++; using (FileStream o=new FileStream(fo,FileMode.Create)){for(int i=0;i!=z;i++){c=b91[f[x][i]]; if(c==91)continue; if(v==91){v=c;}else{v+=c*91;q|=v<<n;if( (v&8191)>88){n+=13;}else{n+=14;}v=91;do{o.WriteByte((byte)q);q>>=8;n-=8;}while(n>7);}}if(v!=91)o.WriteByte((byte)(q|v<<n));} }}} '@; cd -Lit($env:__CD__); function X([int]$x=1){[BAT91]::Dec([ref]$f,$x+1,$x,$k); expand -R $x -F:* .; del $x -force} :bat2file:[ cecho_exe ::AVEYO...,P${......*D........j}?.k...Q52,..+{..d,qGy+|u........RnPf`=m}4T2JkIZL$]Gs7at.u}bg;>[kv;$q,PB.\2/.F1..7yqG}.PM+]zt]U8HNdBH ::Fq2)1;AB#QS,JL)|$(p>ZnV=*tI$2$SoL40Boqhy&U]6+2Cp0r;ks^eD7J@Wh6<9Ua|B*J#{&Q&rKyb-$Ex1TL<SBd,.P-4Tr...3;207z^9o-r3&L@^e2{ZTC%#LxhM4L ::hIT*h*cmh7-J.!#l(=B)*jE%]y+=U8/r&8j1O+_7DWW-x?=)?`B%|rd5F...u,CbwCtnP-f\+=3w`$26!!3g<BovH*/%*n{8-09YMXG>@}a$tpB%W0qPOjugjvuW?wn_wL ::JA|~e+P/\S,0?E*<?in8Er]lFy&r15}P^_X<gr]x^N5$,S&rAWgPGtH)Q??\ct/jOB?EN2PbUu#hJR&jpT==3&VN{UQxqY^y3AGX0|kX[=r(h${Z;eBp9+(RE<+./DlFm% ::Q_6|=Zary7Q(uRJIVejw+eDNz*Xm=kLVpR!`pT/)b;%j7wy4\*v!L>#OgSu}%H<\sC($fgSNoz4e*3]7v1+KLgogq0L_VXH_%&ilWTSc_G5u`t1_P6b8<P|WU,NZ$qKKa@ ::^@>k5SZWNeFQ00FU57-Hu%71(eEj1+}h6\?e36LFo^s6SMbWJ}a-9kOzlB7N@L8|K}=l]*}8feQw>;arc!A`G`Fbk7[[72G,^^L)5a(js^WSAY[?}cOxXA_Y|D]I$(%iCe ::NI5~6dk[]8%!epZnMZUx1E(p=/#(x@x%@OR7Q](ACM)QwSmH\hK$hoxL?B>*t}#(hQKRtLoxIhLG6D0Q}1QD)>A;2huL.`Ih&q!;T~Yl(cQnE&<;`(aXJ1R>@;N`Y|SO10 ::_dG3z2fB,c$)1qEOt%P2g,,xx)(x\b)\ZebtD59^m~yT?=a,-Q>w!LAIyC<P}8PABusEGWjo}k`-bql5KkLECt.C^8N-3uYZ^w~Wre[SM~#z&n*5FE=ig_-;gkS-(&fPRD ::B^=v57nJ8kK2uOs!Uow[V3d%<N#6Yf.zB~pkyN.!Wf9}zeMS!BiFa0SG]op*|qT9rAmPvy>~0%7ekssSS/,J`}t9f@k].6YBvrh^1~4Idcmxb(^R&@nWEE2RM+|p<gj]R- ::.h7`+G\t{T4I-AH[wG]zqE_v1+zq,Ans_LcU%vQ]~_L3TxV2|rw/BDCvZffydObA)?^wbcdG[wF!u#f`.~kGb)9aZOgib[5o*c&~[Xc18SM%.xlNq0JEm#mTvkrF`|dXZ+ ::e?DoNpu*D96pqd_R0iGJus)@%yuw5lSUWJg1&ntAss_to\TR?nQ/bAe-fidS!;HHO=]<Z}{3vn|(exXuGwOpSV%^Jy1{O5(9WwQVCa~U\~+*)OAR7Db3U+AG.Vc%=U~]cf ::C4N%af`3v<*nC)$+[wy~<LPBY;wcP3VF?k5y3!sM&{1k7B0<mp#(I=X-K+[1UEGWcP?5E]zQYXgqwP<FXl%!3h~~?5D)mS!JmbYYrK}${uhBSY3MtUxwq@^{Y4;}G;3&>Z ::-h{P2\f-BlIFR6BM*}>xOLFIAk^lNE)qsFKtDbZk8U6vTjY`/4l;NQG#T66YjZ<l2rG{vhDw@!a4}BhG|p^B@DhC-#9z[x}r(_wRR/op+]8a^s*<=pE^\N}-O(JW?Z^{8I ::ps8v?ymCwK(y8F($Fd`|3Ka4*(YDSx;_[nb{T!CWFMAW`8Kcyx@X2IGJ2|ux1e?8Ok!I<q(Gcb}SmWw5Nr\=v$eq`e[#w)GwZT4,n9H5S)&xVmG@^r$Z1EQN5y;~Yaf8P3 ::[z!cnr-%m@k`o7CLAl4H/HZgP}MC)=5%z]KSYznGSv+7/EHna`v71LUGp5-I>tAsGy#cw)kfS#csI&bc[Z{a.#Hk9St=m,9g8E)n.}9UonG.[%b*~!([*a4z[b8i.cQIw3 ::7z)7IHj#h)I}F<lxp^L-r*jCW?c00AVLh79L&}cP6F?%KK{eOs<$-nul18Ve{L0tMr;fbwzp\27K4jYpOM=LlK`a#3,F)knr76(n6~}J&6|)cmin-uA%/ie#.^/0jqgTZi ::Dadg.|Z/g%M{?gNgf0}o3)[Q>u-O/y(+1HL[5L.N{mjY@yg73PXjwAu<j$c=LTDNi)}pvYwSh5{T(bsHUyl[cHK(AA=9sFG$9i)r/lz_rXN&!x|l@WIM`I]*cpOTB0t-vP ::WT~-qyxaCNKkf/{U=m9&>$7`m(%8La{6UL2@{VLNI=k8`l(V9y/$ec,b2fd~dBs5Rf/m0Cl7|X8C{aOJAwn-fH}BZvjc@,i{G]y8*aeDT$U070Dy=KQs1yB|wYt|UXZ}RO ::@q9=-V8E$9zJ!U>xE.GeQOQMNDj!xwgh@w?RfU}uwy&$pyL00Q^]qi(v/2S=Ky=MOy^^z887P>Qq-D_Fz>?{1]1|b&<exRE_1JKYnn%=kCGU}7STaS,S_[{7GNo1VO4>jQ ::o8^!/PzPK|<Mq+!ei`873T=}w$I+C18PFFH>\\MX2.46B>lIxnv+XTlk%wh)8+i(1Vr3G>.x73w8tf5UHv925piPQb1)j)[7.!2W|PGCH?MU?2_k&8$f{9_RPe,j^5|LmJ ::c+4cAC94]!2nMbIBm_lBFO\!,N_WgvXuz1vySs#jYH3/\)y)<LdbVa.!QU#P^yO(s|[+b$lbv+16cQ&I+3UB;CRWQx{~G*UfiQ5;o[D15=?vUpj^pZ(t|Nma{b1aTg1B#w ::@@>%c~3\dK$=~DR%k1+b#xkJB)dMj!xCjVGf075_wf5d)`bV26vCvwp+K_@UjsCwcUkSe$cNF[s|Ga|#|jf?S+R<>WR9scjpT#JL${7XRj[aN|OD`kF[Ut)G;.C)~q9r]{ ::1HT|zD9DFW[Gt}R`VSP5dNgF]R^ozI*bl5BA417prvJZaCczx~0YfxvJc%he&cW[M?yx!0v7Yl*9L`}K6ggAr7!]TN@|$f5!<N\WE4s#qvna)TwPLCBFhC+SK7Gx(0x!ow ::K^pR-W^5T^DTI<#\-B5bAkcAz]t5%mbCY3QB4seG~I#2beTf~52PmS4g,%nVk*p9h@6SHK0$%\zag/_[xF@R]Op_qEbQt2xSiBMfyP%{\yN.v5<Z;L`1&u%bW[U|XySxab ::&7$pPxs5UHfUtmCr~wt_w~I5P7[XW-f^*6bzb,;Mr^$,iB3f;X?Vh)\5VYm/tqHW+WZlXg}wGgU9(=q1~TC|NP|p9eM(MD,gY7KhY2L(0_U2Xlqn&c(=q@8+dCSYo2+hPY ::H61NEXBvb>00PrsL2Q]%L,_7a;#=iq.2~k6Oa\g-;8%ygp&xnmz7T!`IEb/L-p,`Hv/uM2}nTR~HJV;CS0QwhqKgz.+|Cf[)mRYCT^6Yx}I$W}b@V$AF>^wd+c^57b/_P~ ::tguUJzQ^YY$-RDm9<u]g^1[f*FZ\${K3AZP|?MjI}&+3\s]Licl0_H>F>u|{g[bpS]#t>k({A<3,]cvF./}[he/c@DO}ucR\)B|y=.. :bat2file:] :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :eof that's the embedded version with a sample page using AveYo's Compressed2TXT improved fork of this https://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files source code and more info coming soon edit: here is the binary and the source C file if you want to have a look , no project files/makefiles/import defines yet, i'll add them later when i can be arsed to clean and pack them up so they can be compiled with mingw/visual studio (i use msvc6 lol) and add comments to the code
Can you try to avoid virustotal issue and try to compile source code to meet zero virustotal please. Thanks in advance