Show animated banner in a Batch file

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
Aacini
Expert
Posts: 1914
Joined: 06 Dec 2011 22:15
Location: México City, México
Contact:

Show animated banner in a Batch file

#1 Post by Aacini » 12 Nov 2017 16:54

There are not any descriptions this time, just for a change... 8)

Code: Select all

@echo off
setlocal EnableDelayedExpansion
if "%~1" equ "AnimateBanner" goto AnimateBanner

rem Animated banner in Batch file
rem Antonio Perez Ayala aka Aacini

set "delay=25"
set "myself=%~F0"
call :ShowBanner 60 "The Process Completed Correctly. . ."
goto :EOF


:ShowBanner columns "banner"

rem Assemble the banner lines
set /A cols=%1, colsM1=cols-1
for /L %%i in (1,1,%colsM1%) do set "spaces= !spaces!"
if not defined fontSize call :DefineFont
for /L %%i in (1,1,%fontSize%) do set "msg[%%i]="
set "lowcase=abcdefghijklmnopqrstuvwxyz"
set "msg=%~2"
:nextChar
   for /F "delims=" %%c in ("%msg:~0,1%") do (
      if "%%c" equ "," (
         for /L %%i in (1,1,%fontSize%) do set "msg[%%i]=!msg[%%i]!!fComma%%i!  "
      ) else if "!lowcase:%%c=%%c!" equ "%lowcase%" (
         for /L %%i in (1,1,%fontSize%) do set "msg[%%i]=!msg[%%i]!!f%%c%%i!  "
      ) else (
         for /L %%i in (1,1,%fontSize%) do set "msg[%%i]=!msg[%%i]!!f%%c%%c%%i!  "
      )
   )
   set "msg=%msg:~1%"
if defined msg goto nextChar
call :StrLen "%msg[1]%" msgLen=

rem Animate the banner
start "" /WAIT cmd /C "%myself%" AnimateBanner
exit /B


:AnimateBanner
title Press any key to continue
mode %cols%,%lines%

del keyPressed 2>nul
start /B cmd /C pause^>nul ^& echo X^>keyPressed

set "i=0"
:loop1
(cls
echo/
for %%i in (!i!) do for /L %%j in (1,1,%fontSize%) do (
   echo(!spaces:~%%i!!msg[%%j]:~0,%%i!
))
if exist keyPressed exit
pathping 127.0.0.1 -n -q 1 -p %delay% >nul
set /A i+=1
if %i% lss %colsM1% goto loop1
set "i=0"
:loop2
(cls
echo/
for %%i in (!i!) do for /L %%j in (1,1,%fontSize%) do (
   echo(!msg[%%j]:~%%i,%colsM1%!
))
if exist keyPressed exit
pathping 127.0.0.1 -n -q 1 -p %delay% >nul
set /A i+=1
if %i% lss %msgLen% goto loop2
set "i=0"
goto loop1


:DefineFont

set "next[Û]= "
set "next[ ]=Û"
set "letter="
for %%a in (
   AA = "5 1+3+1 1+3+1 5 1+3+1 1+3+1 1+3+1 0+5"
    a = "0+5 0+5 0+1+3+1 0+4+1 0+1+4 1+3+1 0+1+4 0+5"
   BB = "4+1 1+3+1 1+3+1 4+1 1+3+1 1+3+1 4+1 0+5"
    b = "1+4 1+4 1+4 4+1 1+3+1 1+3+1 4+1 0+5"
   CC = "5 1+4 1+4  1+4  1+4 1+4 5 0+5"
    c = "0+5 0+5 5 1+4 1+4 1+4 5 0+5"
   DD = "4+1 1+3+1 1+3+1  1+3+1  1+3+1 1+3+1 4+1 0+5"
    d = "0+4+1 0+4+1 0+4+1 0+1+4 1+3+1 1+3+1 0+1+4 0+5"
   EE = "5 1+4 1+4 5 1+4 1+4 5 0+5"
    e = "0+5 0+5 0+1+3+1 1+3+1 5 1+4 0+1+4 0+5"
   FF = "5 1+4 1+4 5 1+4 1+4 1+4 0+5"
    f = "0+1+2 0+1+1+1 0+1+1+1 3 0+1+1+1 0+1+1+1 0+1+1+1 0+3"
   GG = "5 1+4 1+4 1+1+3 1+3+1 1+3+1 5 0+5"
    g = "0+5 0+5 0+1+4 1+3+1 1+3+1 0+1+4 0+4+1 4+1"
   HH = "1+3+1 1+3+1 1+3+1 5 1+3+1 1+3+1 1+3+1 0+5"
    h = "1+4 1+4 1+4 4+1 1+3+1 1+3+1 1+3+1 0+5"
   II = "3 0+1+1+1 0+1+1+1 0+1+1+1 0+1+1+1 0+1+1+1 3 0+3"
    i = "1 0+1 1 1 1 1 1 0+1"
   JJ = "0+4+1 0+4+1 0+4+1 0+4+1 1+3+1 1+3+1 5 0+5"
    j = "0+2+1 0+3 0+2+1 0+2+1 0+2+1 0+2+1 1+1+1 3"
   KK = "1+3+1 1+2+1+1 1+1+1+2 2+3 1+1+1+2 1+2+1+1 1+3+1 0+5"
    k = "1+3 1+3 1+2+1 1+1+1+1 2+2 1+1+1+1 1+2+1 0+4"
   LL = "1+4 1+4 1+4 1+4 1+4 1+4 5 0+5"
    l = "2+1 0+1+1+1 0+1+1+1 0+1+1+1 0+1+1+1 0+1+1+1 3 0+3"
   MM = "1+5+1 2+3+2 1+1+1+1+1+1+1 1+2+1+2+1 1+5+1 1+5+1 1+5+1 0+7"
    m = "0+6 0+6 1+1+1+1+1+1 0+1+1+1+1+1+1 0+1+1+1+1+1+1 0+1+1+1+1+1+1 0+1+1+1+1+1+1 0+6"
   NN = "1+5+1 2+4+1 1+1+1+3+1 1+2+1+2+1 1+3+1+1+1 1+4+2 1+5+1 0+7"
    n = "0+4 0+4 1+1+1+1 0+1+1+1+1 0+1+1+1+1 0+1+1+1+1 0+1+1+1+1 0+4"
   OO = "5 1+3+1 1+3+1  1+3+1  1+3+1 1+3+1 5 0+5"
    o = "0+5 0+5 0+1+3+1 1+3+1 1+3+1 1+3+1 0+1+3+1 0+5"
   PP = "5 1+3+1 1+3+1  5  1+4 1+4 1+4 0+5"
    p = "0+5 0+5 4+1 1+3+1 1+3+1 4+1 1+4 1+4"
   QQ = "5 1+3+1 1+3+1  1+3+1  1+1+1+1+1 1+2+1+1 3+1+1 0+5"
    q = "0+5 0+5 0+1+4 1+3+1 1+3+1 0+1+4 0+4+1 0+4+1"
   RR = "5 1+3+1 1+3+1  5  1+1+1+2 1+2+1+1 1+3+1 0+5"
    r = "0+4 0+4 1+1+2 2+2 1+3 1+3 1+3 0+4"
   SS = "5 1+4 1+4 5 0+4+1 0+4+1 5 0+5"
    s = "0+5 0+5 0+1+4 1+4 0+1+3+1 0+4+1 4+1 0+5"
   TT = "5 0+2+1+2 0+2+1+2 0+2+1+2 0+2+1+2 0+2+1+2 0+2+1+2 0+5"
    t = "0+1+1+1 0+1+1+1 3 0+1+1+1 0+1+1+1 0+1+1+1 0+1+2 0+3"
   UU = "1+3+1 1+3+1 1+3+1 1+3+1 1+3+1 1+3+1 5 0+5"
    u = "0+5 0+5 1+3+1 1+3+1 1+3+1 1+3+1 0+1+3+1 0+5"
   VV = "1+5+1 1+5+1 0+1+1+3+1+1 0+1+1+3+1+1 0+2+1+1+1+2 0+2+1+1+1+2 0+3+1+3 0+7"
    v = "0+5 0+5 1+3+1 1+3+1 0+1+1+1+1+1 0+1+1+1+1+1 0+2+1+2 0+5"
   WW = "1+5+1 1+5+1 1+5+1 1+2+1+2+1 1+1+1+1+1+1+1 2+3+2 1+5+1 0+7"
    w = "0+7 0+7 1+5+1 1+5+1 0+1+1+3+1+1 0+1+1+1+1+1+1+1 0+2+1+1+1+2 0+7"
   XX = "1+5+1 0+1+1+3+1+1 0+2+1+1+1+2 0+3+1+3 0+2+1+1+1+2 0+1+1+3+1+1 1+5+1 0+7"
    x = "0+5 0+5 1+3+1 0+1+1+1+1+1 0+2+1+2 0+1+1+1+1+1 1+3+1 0+5"
   YY = "1+5+1 0+1+1+3+1+1 0+2+1+1+1+2 0+3+1+3 0+3+1+3 0+3+1+3 0+3+1+3 0+7"
    y = "0+5 0+5 1+3+1 0+1+1+1+1+1 0+2+1+2 0+1+1+3 1+4 0+5"
   ZZ = "7 0+5+1+1 0+4+1+2 0+3+1+3 0+2+1+4 0+1+1+5 7 0+7"
    z = "0+5 0+5 5 0+3+1+1 0+2+1+2 0+1+1+3 5 0+5"
    - = "0+3 0+3 0+3 3 0+3 0+3 0+3 0+3"
    . = "0+3 0+3 0+3 0+3 0+3 3 3 0+3"
Comma = "0+3 0+3 0+3 0+3 0+3 3 3 0+2+1"
) do (
   if not defined letter (
      set "letter=%%a"
   ) else (
      set "i=0"
      for %%b in (%%~a) do (
         set /A i+=1
         set "line="
         set "char=Û"
         set "num=%%b"
         set "num=!num:+= !"
         for %%j in (!num!) do (
            for /L %%k in (1,1,%%j) do set "line=!line!!char!"
            for /F "delims=" %%k in ("!char!") do set "char=!next[%%k]!"
         )
         set "f!letter!!i!=!line!"
      )
      set "letter="
   )
)
set /A fontSize=8, lines=fontSize+2
for /L %%i in (1,1,%fontSize%) do set "f %%i=   "
exit /B


:StrLen "str" len=
set "str=0%~1"
set "%2=0"
for /L %%a in (8,-1,0) do (
   set /A "newLen=%2+(1<<%%a)"
   for %%b in (!newLen!) do if "!str:~%%b,1!" neq "" set "%2=%%b"
)
exit /B
Antonio

dbenham
Expert
Posts: 2461
Joined: 12 Feb 2011 21:02
Location: United States (east coast)

Re: Show animated banner in a Batch file

#2 Post by dbenham » 12 Nov 2017 22:23

Pretty cool 8)

Did you consider incorporating libraries of fonts as you and I both had worked on years ago?
https://stackoverflow.com/a/19177044/1012053
https://stackoverflow.com/a/19188162/1012053


Dave Benham

Post Reply