use*_*361 -1 ascii batch-file ascii-art
这是字体
:: __ ___ ____ _ _ _____ __ ______ ___ ___ ___
:: /_ | |__ \ |___ \ | || | | ____| / / |____ | / _ \ / _ \ / _ \
:: | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) | | | | |
:: | | / / |__ < |__ _| |___ \ | '_ \ / / > _ < \__, | | | | |
:: | | / /_ ___) | | | ___) | | (_) | / / | (_) | / / | |_| |
:: |_| |____| |____/ |_| |____/ \___/ /_/ \___/ /_/ \___/
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道如何引用彼此相邻的多行字符.
试一试:)
@echo off
echo The digits:
call :printNum 0123456789
echo(
echo The answer to life, the universe, and everything:
call :printNum 42
exit /b
:printNum
setlocal enableDelayedExpansion
set "str=%~1"
call :strLen str len
set /a len-=1
for /l %%N in (1 1 6) do set "ln%%N="
for /l %%N in (0 1 %len%) do call :!str:~%%N,1!
for /l %%N in (1 1 6) do echo(!ln%%N!
exit /b
:1
set "ln1=!ln1! __ "
set "ln2=!ln2! /_ |"
set "ln3=!ln3! | |"
set "ln4=!ln4! | |"
set "ln5=!ln5! | |"
set "ln6=!ln6! |_|"
exit /b
:2
set "ln1=!ln1! ___ "
set "ln2=!ln2! |__ \ "
set "ln3=!ln3! ) |"
set "ln4=!ln4! / / "
set "ln5=!ln5! / /_ "
set "ln6=!ln6! |____|"
exit /b
:3
set "ln1=!ln1! ____ "
set "ln2=!ln2! |___ \ "
set "ln3=!ln3! __) |"
set "ln4=!ln4! |__ < "
set "ln5=!ln5! ___) |"
set "ln6=!ln6! |____/ "
exit /b
:4
set "ln1=!ln1! _ _ "
set "ln2=!ln2! | || | "
set "ln3=!ln3! | || |_ "
set "ln4=!ln4! |__ _|"
set "ln5=!ln5! | | "
set "ln6=!ln6! |_| "
exit /b
:5
set "ln1=!ln1! _____ "
set "ln2=!ln2! | ____|"
set "ln3=!ln3! | |__ "
set "ln4=!ln4! |___ \ "
set "ln5=!ln5! ___) |"
set "ln6=!ln6! |____/ "
exit /b
:6
set "ln1=!ln1! __ "
set "ln2=!ln2! / / "
set "ln3=!ln3! / /_ "
set "ln4=!ln4! | '_ \ "
set "ln5=!ln5! | (_) |"
set "ln6=!ln6! \___/ "
exit /b
:7
set "ln1=!ln1! ______ "
set "ln2=!ln2! |____ |"
set "ln3=!ln3! / / "
set "ln4=!ln4! / / "
set "ln5=!ln5! / / "
set "ln6=!ln6! /_/ "
exit /b
:8
set "ln1=!ln1! ___ "
set "ln2=!ln2! / _ \ "
set "ln3=!ln3! | (_) |"
set "ln4=!ln4! > _ < "
set "ln5=!ln5! | (_) |"
set "ln6=!ln6! \___/ "
exit /b
:9
set "ln1=!ln1! ___ "
set "ln2=!ln2! / _ \ "
set "ln3=!ln3! | (_) |"
set "ln4=!ln4! \__, |"
set "ln5=!ln5! / / "
set "ln6=!ln6! /_/ "
exit /b
:0
set "ln1=!ln1! ___ "
set "ln2=!ln2! / _ \ "
set "ln3=!ln3! | | | |"
set "ln4=!ln4! | | | |"
set "ln5=!ln5! | |_| |"
set "ln6=!ln6! \___/ "
exit /b
:strLen string len -- returns the length of a string
:: -- string [in] - variable name containing the string being measured for length
:: -- len [out] - variable to be used to return the string length
:: Many thanks to 'sowgtsoi', but also 'jeb' and 'amel27' dostips forum users helped making this short and efficient
:$created 20081122 :$changed 20101116 :$categories StringOperation
:$source http://www.dostips.com
( SETLOCAL ENABLEDELAYEDEXPANSION
set "str=A!%~1!"&rem keep the A up front to ensure we get the length and not the upper bound
rem it also avoids trouble in case of empty string
set "len=0"
for /L %%A in (12,-1,0) do (
set /a "len|=1<<%%A"
for %%B in (!len!) do if "!str:~%%B,1!"=="" set /a "len&=~1<<%%A"
)
)
( ENDLOCAL & REM RETURN VALUES
IF "%~2" NEQ "" SET /a %~2=%len%
)
EXIT /b
Run Code Online (Sandbox Code Playgroud)
- 输出 -
The digits:
___ __ ___ ____ _ _ _____ __ ______ ___ ___
/ _ \ /_ | |__ \ |___ \ | || | | ____| / / |____ | / _ \ / _ \
| | | | | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) |
| | | | | | / / |__ < |__ _| |___ \ | '_ \ / / > _ < \__, |
| |_| | | | / /_ ___) | | | ___) | | (_) | / / | (_) | / /
\___/ |_| |____| |____/ |_| |____/ \___/ /_/ \___/ /_/
The answer to life, the universe, and everything:
_ _ ___
| || | |__ \
| || |_ ) |
|__ _| / /
| | / /_
|_| |____|
Run Code Online (Sandbox Code Playgroud)
更新
我扩展了Aacini的想法,以便更改字体; 我实际上创建了一个批处理例程库,以便于以多种字体打印.可以通过附加到库脚本或通过为每个新字体创建单独的字体脚本来添加字体.发布的库有两种内置的字体 - Big和Standard.我还发布了一个小字体的独立字体脚本.字体脚本必须与主库位于同一目录中.
Banner.bat
@echo off
if "%~1" neq "" (
2>nul findstr /bric:":%~1\>" "%~f0" | findstr /bivc:":font_" >nul && (
shift /1&goto %1
) || (
>&2 echo ERROR: routine %~1 not found
)
) else >&2 echo ERROR: missing routine
:Usage -- Library syntax and general info
:: ____ _ _
:: | __ ) __ _ _ __ _ __ ___ _ __ | |__ __ _ | |_
:: | _ \ / _` | | '_ \ | '_ \ / _ \ | '__| | '_ \ / _` | | __|
:: | |_) | | (_| | | | | | | | | | | __/ | | _ | |_) | | (_| | | |_
:: |____/ \__,_| |_| |_| |_| |_| \___| |_| (_) |_.__/ \__,_| \__|
::
:: Banner.bat is a library of batch routines that enables printing messages
:: to the screen using multi-line fonts.
::
:: Syntax:
::
:: [call] [path]banner command [arguments]
::
:: For a full list of commands, use:
::
:: banner help
::
:: For detailed help on a specific command, use:
::
:: banner help command
::
call :help usage
exit /b
:Help [Command] -- Help for commands in this library
::
:: Displays help about Command
::
:: If Command is not specified, then lists all available commands.
::
setlocal disableDelayedExpansion
set file="%~f0"
echo(
if not "%~1"=="" goto :help.func
for /f "tokens=* delims=:" %%A in (
'findstr /r "^:[^:]" "%~f0"^|findstr /rvi "^:font_"^|sort'
) do echo( %%A
exit /b
:help.func
set beg=
for /f "tokens=1,* delims=:" %%a in ('findstr /nric:"^:%~1\>" "%~f0"') do (
if not defined beg set beg=%%a
)
if not defined beg (1>&2 echo: Function %~1 not found) & exit /b 1
set end=
for /f "tokens=1 delims=:" %%a in ('findstr /nrc:"^[^:]" "%~f0"') do (
if not defined end if %beg% LSS %%a set end=%%a
)
for /f "tokens=1,* delims=[]:" %%a in ('findstr /n "^" "%~f0"') do (
if %beg% leq %%a if %%a lss %end% echo: %%b
)
exit /b
:PrintStr Font String -- Print a string literal
::
:: Prints String using the specified multi-line Font.
::
:: If the font has not yet been loaded, then the font will be loaded temporarily
:: and released once the line has been printed. If printing multiple lines, then
:: it is more efficient to pre-load the font using LoadFont.
::
:: The following escape sequences are available for troublesome characters:
::
:: \c = ^ (caret)
::
:: \p = % (percent)
::
:: \q = " (quote)
::
:: \\ = \ (backslash)
::
setlocal disableDelayedExpansion
set "str=%~2"
setlocal enableDelayedExpansion
set "str=!str:\q="!"
set "str=!str:\c=^!"
set "str=!str:\p=%%!"
set "str=!str:\\=\!"
call :printVar %1 str
exit /b
:PrintVar Font StrVar -- Print value of a string variable
::
:: Prints the value of variable StrVar using the specified multi-line Font.
::
:: If the font has not yet been loaded, then the font will be loaded temporarily
:: and released once the line has been printed. If printing multiple lines, then
:: it is more efficient to pre-load the font using LoadFont.
::
setlocal enableDelayedExpansion
if not defined font.%~1.height call :loadFont %1
set "lower=abcdefghijklmnopqrstuvwxyz"
call :strLen %~2 len
set /a len-=1
for /l %%N in (1 1 !font.%~1.height!) do set "ln%%N="
for /l %%P in (0 1 %len%) do (
set "chr=!%~2:~%%P,1!"
if "!chr!" equ "=" (
set "chr=equal"
) else if "!chr!" equ ":" (
set "chr=colon"
) else if "!chr!" equ "^!" (
set "chr=bang"
) else if "!chr!" equ "^^" (
set "chr=^^"
) else if "!chr!" neq "*" if "!chr!" neq "~" for /f "delims=" %%C in ("!chr!") do if "!lower:%%C=%%C!" neq "!lower!" set "chr=upper%%C"
if not defined font.%~1.!chr!.1 set "chr=missing"
for /f delims^=^ eol^= %%C in ("!chr!") do for /l %%N in (1 1 !font.%~1.height!) do set "ln%%N=!ln%%N!!font.%~1.%%C.%%N!"
)
for /l %%N in (1 1 !font.%~1.height!) do echo(!ln%%N!
exit /b
:LoadFont Font -- Load a font definition for later use
::
:: Loads Font into memory to enable faster printing
::
if "%~1" equ "" (
echo ERROR: Missing font argument
exit /b 1
)
setlocal disableDelayedExpansion
if exist "%~dp0Font_%~1.bat" (
call "%~dp0Font_%~1.bat"
) else findstr /bri ":font_%~1\>" "%~f0" >nul && (
call :font_%~1
) || (
echo ERROR: Font %~1 not found
exit /b 1
)
set font.%~1.setlocal=1
setlocal enableDelayedExpansion
set "lower=abcdefghijklmnopqrstuvwxyz"
set "font.%~1.height=!fontHeight!"
set /a "pos=0, ln=1, start=0"
for %%W in (!fontWidth!) do for %%S in (!start!) do (
if !pos! equ 0 (
set chr=missing
) else for %%N in (!pos!) do set "chr=!fontChars:~%%N,1!"
if "!chr!" equ "^!" (
set "chr=bang"
) else if "!chr!" equ "=" (
set "chr=equal"
) else if "!chr!" equ ":" (
set "chr=colon"
) else if "!chr!" neq "*" if "!chr!" neq "~" for /f "delims=" %%C in ("!chr!") do if "!lower:%%C=%%C!" neq "!lower!" set "chr=upper%%C"
for /l %%N in (1 1 !fontHeight!) do set "font.%~1.!chr!.%%N=!font%%N:~%%S,%%W!"
set /a "start+=%%W, pos+=1"
)
for /f "delims=" %%A in ('set font.%~1.') do (
if defined font.%~1.setlocal endlocal&endlocal
if "%%A" neq "font.%~1.setlocal=1" set "%%A"
)
exit /b
:ListFonts -- List all available fonts
::
:: List all available fonts. Fonts may be embedded directly within this
:: script, or they may be stand-alone files within the same directory
:: as this library.
echo(
(
for /f "delims=_. tokens=2" %%A in (
'findstr /lbi :font_ "%~f0"^^^&dir /b "%~dp0font_*.bat"'
) do @echo %%A
)|sort
:StrLen StrVar LenVar -- Compute the length of a string
::
:: Compute the length of the string within variable StrVar
:: and return the result in variable LenVar.
::
:: Many thanks to 'sowgtsoi', but also 'jeb' and 'amel27' dostips forum users
:: helped making this short and efficient.
:: Created 20081122 :$changed 20101116 :$categories StringOperation
:: Source http://www.dostips.com
( SETLOCAL ENABLEDELAYEDEXPANSION
set "str=A!%~1!"&rem keep the A up front to ensure we get the length and not the upper bound
rem it also avoids trouble in case of empty string
set "len=0"
for /L %%A in (12,-1,0) do (
set /a "len|=1<<%%A"
for %%B in (!len!) do if "!str:~%%B,1!"=="" set /a "len&=~1<<%%A"
)
)
( ENDLOCAL & REM RETURN VALUES
IF "%~2" NEQ "" SET /a %~2=%len%
)
EXIT /b
:: Font Definitions
:: ================================================================================
:: Additional fonts may be appended to this script with a label of :font_fontName
:: Alternatively, a font may be installed as a stand-alone file in the same folder
:: as banner.bat. Each font file should be named font_fontName.bat
::
:: Each font should define fontChars, fontHeight, fontWidth, and font1...fontN. The
:: letters in fontChars should correspond to the letters defined in font1..fontN.
:: You can define as many or as few characters as you want for a given font.
:: A special symbol will be used in place of any undefined character. The first
:: character must be the symbol used to represent an undefined character.
:: If " is defined, then it should be the last character.
:: Don't forget to double the % in the fontChars string.
:Font_Big
set "fontChars= ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz0123456789`~!@#$%%^&*()_+-={}|[]\:;'<>?,./""
set "fontHeight=8"
set "fontWidth= 6 11 8 9 9 9 9 9 9 8 9 7 9 9 8 9 9 9 9 9 10 9 11 15 8 10 8 6 8 8 7 8 7 6 8 8 4 6 7 4 12 8 8 8 8 7 6 6 8 8 11 7 8 6 8 5 7 8 9 8 8 9 8 8 4 6 4 10 11 6 8 5 9 10 5 5 9 8 9 9 6 6 4 6 6 8 4 4 4 6 6 7 4 4 8 6 "
set "font1= ____ _____ _____ ______ ______ _____ _ _ _____ _ _ __ _ __ __ _ _ ____ _____ ____ _____ _____ _______ _ _ __ __ __ __ __ __ __ __ ______ _ _ __ _ _ _ _ _ _ ___ __ ___ ____ _ _ _____ __ ______ ___ ___ _ /\/| _ ____ _ _ _ _ __ /\ _ __ __ __ __ _ ___ ___ __ _ __ __ ___ __ _ _ "
set "font2= ..... /\ | _ \ / ____| | __ \ | ____| | ____| / ____| | | | | |_ _| | | | |/ / | | | \/ | | \ | | / __ \ | __ \ / __ \ | __ \ / ____) |__ __| | | | | \ \ / / \ \ / / \ \ / / \ \ / / |___ / | | | | / _| | | (_) (_) | | | | | | / _ \ /_ | |__ \ |___ \ | || | | ____| / / |____ | / _ \ / _ \ ( ) |/\/ | | / __ \ _| || |_ | | (_) / / |/\| ___ /\| |/\ / / \ \ _ ______ / / \ \ | | | _| |_ | \ \ _ _ ( ) / / \ \ |__ \ / / ( | )"
set "font3= ..... / \ | |_) | | | | | | | | |__ | |__ | | __ | |__| | | | | | | ' / | | | \ / | | \| | | | | | | |__) | | | | | | |__) | | (___ | | | | | | \ \ / / \ \ /\ / / \ V / \ \_/ / / / __ _ | |__ ___ __| | ___ | |_ __ _ | |__ _ _ | | __ | | _ __ ___ _ __ ___ _ __ __ _ _ __ ___ | |_ _ _ __ __ __ __ __ __ _ _ ____ | | | | | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) | \| | | / / _` | |_ __ _| / __) / / ( - ) \ ` ' / | | | | _| |_ ______ |______| | | | | | | | | | | \ \ (_) (_) |/ / / \ \ ) | / / V V "
set "font4= ..... / /\ \ | _ < | | | | | | | __| | __| | | |_ | | __ | | | _ | | | < | | | |\/| | | . ` | | | | | | ___/ | | | | | _ / \___ \ | | | | | | \ \/ / \ \/ \/ / > < \ / / / / _` | | '_ \ / __| / _` | / _ \ | _| / _` | | '_ \ | | | | | |/ / | | | '_ ` _ \ | '_ \ / _ \ | '_ \ / _` | | '__| / __| | __| | | | | \ \ / / \ \ /\ / / \ \/ / | | | | |_ / | | | | | | / / |__ < |__ _| |___ \ | '_ \ / / > _ < \__, | | | | | (_| | _| || |_ \__ \ / / / _ \/\ |_ _| | | | | |_ _| |______| ______ / / \ \ | | | | | | \ \ < < > > / / / / "
set "font5= ..... / ____ \ | |_) | | |____ | |__| | | |____ | | | |__| | | | | | _| |_ | |__| | | . \ | |____ | | | | | |\ | | |__| | | | | |__| | | | \ \ ____) | | | | |__| | \ / \ /\ / / . \ | | / /__ | (_| | | |_) | | (__ | (_| | | __/ | | | (_| | | | | | | | | | | < | | | | | | | | | | | | | (_) | | |_) | | (_| | | | \__ \ | |_ | |_| | \ V / \ V V / > < | |_| | / / | |_| | | | / /_ ___) | | | ___) | | (_) | / / | (_) | / / |_| \ \__,_| |_ __ _| ( / / / _ | (_> < / , . \ | | | | |_| |______| \ \ / / | | | | | | \ \ _ _ \ \ / / |_| _ _ / / "
set "font6= /_/ \_\ |____/ \_____| |_____/ |______| |_| \_____| |_| |_| |_____| \____/ |_|\_\ |______| |_| |_| |_| \_| \____/ |_| \___\_\ |_| \_\ (_____/ |_| \____/ \/ \/ \/ /_/ \_\ |_| /_____| \__,_| |_.__/ \___| \__,_| \___| |_| \__, | |_| |_| |_| | | |_|\_\ |_| |_| |_| |_| |_| |_| \___/ | .__/ \__, | |_| |___/ \__| \__,_| \_/ \_/\_/ /_/\_\ \__, | /___| \___/ |_| |____| |____/ |_| |____/ \___/ /_/ \___/ /_/ (_) \____/ |_||_| |_| /_/ (_) \___/\/ \/|_|\/ | | | | | | | | | | | |_ _| | \_\ (_) ( ) \_\ /_/ (_) ( ) (_) /_/ "
set "font7= __/ | _/ | | | | | __/ | \_\ /_/ ______ \_\ /_/ |_| |___| |___| |/ |/ "
set "font8= |___/ |__/ |_| |_| |___/ |______| "
exit /b
:Font_Standard
set "fontChars= ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz0123456789`~!@#$%%^&*()_+-={}|[]\:;'<>?,./""
set "fontHeight=6"
set "fontWidth= 6 10 8 8 8 8 8 8 8 6 8 7 8 9 8 8 8 8 8 8 8 8 10 13 7 8 7 4 8 8 7 8 7 6 8 8 4 6 7 4 12 8 8 8 8 7 6 6 8 8 11 7 8 6 8 4 8 8 9 8 8 8 8 8 4 6 4 10 11 6 7 5 9 7 5 5 8 8 8 8 6 6 4 5 5 7 4 4 4 5 5 6 4 4 7 6 "
set "font1= _ ____ ____ ____ _____ _____ ____ _ _ ___ _ _ __ _ __ __ _ _ ___ ____ ___ ____ ____ _____ _ _ __ __ __ __ __ __ __ __ _____ _ _ __ _ _ _ _ _ _ ___ _ ____ _____ _ _ ____ __ _____ ___ ___ _ /\/| _ ____ _ _ _ _ __ /\ ___ __ __ __ __ _ __ __ __ _ __ __ ___ __ _ _ "
set "font2= ..... / \ | __ ) / ___| | _ \ | ____| | ___| / ___| | | | | |_ _| | | | |/ / | | | \/ | | \ | | / _ \ | _ \ / _ \ | _ \ / ___| |_ _| | | | | \ \ / / \ \ / / \ \/ / \ \ / / |__ / __ _ | |__ ___ __| | ___ / _| __ _ | |__ (_) (_) | | __ | | _ __ ___ _ __ ___ _ __ __ _ _ __ ___ | |_ _ _ __ __ __ __ __ __ _ _ ____ / _ \ / | |___ \ |___ / | || | | ___| / /_ |___ | ( _ ) / _ \ ( ) |/\/ | | / __ \ _| || |_ | | (_)/ / |/\| ( _ ) __/\__ / / \ \ _ _____ / / \ \ | | | _| |_ | \ \ _ _ ( ) / / \ \ |__ \ / / ( | )"
set "font3= ..... / _ \ | _ \ | | | | | | | _| | |_ | | _ | |_| | | | _ | | | ' / | | | |\/| | | \| | | | | | | |_) | | | | | | |_) | \___ \ | | | | | | \ \ / / \ \ /\ / / \ / \ V / / / / _` | | '_ \ / __| / _` | / _ \ | |_ / _` | | '_ \ | | | | | |/ / | | | '_ ` _ \ | '_ \ / _ \ | '_ \ / _` | | '__| / __| | __| | | | | \ \ / / \ \ /\ / / \ \/ / | | | | |_ / | | | | | | __) | |_ \ | || |_ |___ \ | '_ \ / / / _ \ | (_) | \| | | / / _` | |_ .. _| / __) / / / _ \/\ \ / | | | | _| |_ _____ |_____| | | | | | | | | | | \ \ (_) (_) |/ / / \ \ / / / / V V "
set "font4= ..... / ___ \ | |_) | | |___ | |_| | | |___ | _| | |_| | | _ | | | | |_| | | . \ | |___ | | | | | |\ | | |_| | | __/ | |_| | | _ < ___) | | | | |_| | \ V / \ V V / / \ | | / /_ | (_| | | |_) | | (__ | (_| | | __/ | _| | (_| | | | | | | | | | | < | | | | | | | | | | | | | (_) | | |_) | | (_| | | | \__ \ | |_ | |_| | \ V / \ V V / > < | |_| | / / | |_| | | | / __/ ___) | |__ _| ___) | | (_) | / / | (_) | \__, | |_| | | (_| | |_ _| \__ \ / /_ | (_> < /_ _\ | | | | |_ _| |_____| |_____| < < > > | | | | | | \ \ _ _ \ \ / / |_| _ _ / / "
set "font5= ..... /_/ \_\ |____/ \____| |____/ |_____| |_| \____| |_| |_| |___| \___/ |_|\_\ |_____| |_| |_| |_| \_| \___/ |_| \__\_\ |_| \_\ |____/ |_| \___/ \_/ \_/\_/ /_/\_\ |_| /____| \__,_| |_.__/ \___| \__,_| \___| |_| \__, | |_| |_| |_| _/ | |_|\_\ |_| |_| |_| |_| |_| |_| \___/ | .__/ \__, | |_| |___/ \__| \__,_| \_/ \_/\_/ /_/\_\ \__, | /___| \___/ |_| |_____| |____/ |_| |____/ \___/ /_/ \___/ /_/ (_) \ \__,_| |_||_| ( / /_/(_) \___/\/ \/ | | | | _____ |_| | | | | | | | | | | \_\ (_) ( ) \_\ /_/ (_) ( ) (_) /_/ "
set "font6= |___/ |__/ |_| |_| |___/ \____/ |_| \_\ /_/ |_____| \_\ /_/ |_| |__| |__| |/ |/ "
exit /b
Run Code Online (Sandbox Code Playgroud)
font_Small.bat
set "fontChars= ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz0123456789`~!@#$%%^&*()_+-={}|[]\:;'<>?,./""
set "fontHeight=5"
set "fontWidth= 5 8 6 7 7 6 6 7 7 6 7 7 7 9 7 8 6 8 6 6 8 8 8 11 7 8 6 4 7 7 5 7 6 6 7 7 4 6 6 4 8 7 6 7 7 6 5 6 7 6 9 6 7 5 7 4 6 6 7 6 6 7 6 6 4 6 4 9 10 5 8 5 9 5 5 5 6 8 6 6 6 6 4 5 5 6 4 4 4 5 5 6 4 4 6 6 "
set "font1= _ ___ ___ ___ ___ ___ ___ _ _ ___ _ _ __ _ __ __ _ _ ___ ___ ___ ___ ___ _____ _ _ __ __ __ __ __ __ __ __ ____ _ _ __ _ _ _ _ _ _ __ _ ___ ____ _ _ ___ __ ____ ___ ___ _ /\/| _ ____ _ _ _ __ /\ __ __ __ _ __ __ _ __ __ __ _ _ _ __ __ ___ __ _ _ "
set "font2= .... /_\ | _ ) / __| | \ | __| | __| / __| | || | |_ _| _ | | | |/ / | | | \/ | | \| | / _ \ | _ \ / _ \ | _ \ / __| |_ _| | | | | \ \ / / \ \ / / \ \/ / \ \ / / |_ / __ _ | |__ __ __| | ___ / _| __ _ | |_ (_) (_) | |__ | | _ __ _ _ ___ _ __ __ _ _ _ ___ | |_ _ _ __ __ __ __ __ __ __ _ _ ___ / \ / | |_ ) |__ / | | | | __| / / |__ | ( _ ) / _ \ ( ) |/\/ | | / __ \ _| | |_ ||_ (_)/ / |/\| / _|___ _/\_ / / \ \ _| |_ ___ ___ / / \ \ | | | _| |_ | \ \ (_) (_) ( ) / / \ \ |__ \ / / ( | )"
set "font3= .... / _ \ | _ \ | (__ | |) | | _| | _| | (_ | | __ | | | | || | | ' < | |__ | |\/| | | .` | | (_) | | _/ | (_) | | / \__ \ | | | |_| | \ V / \ \/\/ / > < \ V / / / / _` | | '_ \ / _| / _` | / -_) | _| / _` | | ' \ | | | | | / / | | | ' \ | ' \ / _ \ | '_ \ / _` | | '_| (_-< | _| | || | \ V / \ V V / \ \ / | || | |_ / | () | | | / / |_ \ |_ _| |__ \ / _ \ / / / _ \ \_, / \| |_| / / _` | |_ . _| (_-< / /_ > _|_ _| > < | | | | |_ _| |___| |___| _| | | |_ | | | | | | \ \ _ _ |/ < < > > /_/ _ _ / / V V "
set "font4= .... /_/ \_\ |___/ \___| |___/ |___| |_| \___| |_||_| |___| \__/ |_|\_\ |____| |_| |_| |_|\_| \___/ |_| \__\_\ |_|_\ |___/ |_| \___/ \_/ \_/\_/ /_/\_\ |_| /___| \__,_| |_.__/ \__| \__,_| \___| |_| \__, | |_||_| |_| _/ | |_\_\ |_| |_|_|_| |_||_| \___/ | .__/ \__, | |_| /__/ \__| \_,_| \_/ \_/\_/ /_\_\ \_, | /__| \__/ |_| /___| |___/ |_| |___/ \___/ /_/ \___/ /_/ (_) \ \__,_| |_ _| / _/ /_/(_) \_____| \/ | | | | ___ |_| |___| | | | | | | | | | | \_\ (_) ( ) \_\ /_/ (_) ( ) (_) /_/ "
set "font5= |___/ |__/ |_| |_| |__/ \____/ |_|_| || \_\ /_/ |___| \_\ /_/ |_| |__| |__| |/ |/ "
exit /b
Run Code Online (Sandbox Code Playgroud)
Banner.bat中内置了完整的文档
样品用法:
call banner printStr standard "Hello world!"
Run Code Online (Sandbox Code Playgroud)
下面的批处理文件允许您轻松更改字体:
\n\n@echo off\nsetlocal EnableDelayedExpansion\n\nset "font[1]= ___ __ ___ ____ _ _ _____ __ ______ ___ ___ "\nset "font[2]= / _ \\ /_ | |__ \\ |___ \\ | || | | ____| / / |____ | / _ \\ / _ \\ "\nset "font[3]= | | | | | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) |"\nset "font[4]= | | | | | | / / |__ < |__ _| |___ \\ | \'_ \\ / / > _ < \\__, |"\nset "font[5]= | |_| | | | / /_ ___) | | | ___) | | (_) | / / | (_) | / / "\nset "font[6]= \\___/ |_| |____| |____/ |_| |____/ \\___/ /_/ \\___/ /_/ "\nset fontWides=8 5 7 8 9 8 8 9 8 8\nset fontLines=6\n\nfor /L %%i in (1,1,%fontLines%) do (\n set n=0\n for %%w in (%fontWides%) do (\n set num[%%i][!n!]=!font[%%i]:~0,%%w!\n set font[%%i]=!font[%%i]:~%%w!\n set /A n+=1\n )\n)\n\necho All digits:\ncall :numBanner 1234567890\necho A test with number 725:\ncall :numBanner 725\ngoto :EOF\n\n:numBanner number\nset number=%1\nset "digits="\n:nextDigit\n set digits=%digits% %number:~0,1%\n set number=%number:~1%\nif defined number goto nextDigit\nfor /L %%i in (1,1,%fontLines%) do (\n set "line="\n for %%d in (%digits%) do (\n set line=!line!!num[%%i][%%d]!\n )\n echo !line!\n)\nexit /B\nRun Code Online (Sandbox Code Playgroud)\n\n输出:
\n\nAll digits:\n __ ___ ____ _ _ _____ __ ______ ___ ___ ___\n /_ | |__ \\ |___ \\ | || | | ____| / / |____ | / _ \\ / _ \\ / _ \\\n | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) | | | | |\n | | / / |__ < |__ _| |___ \\ | \'_ \\ / / > _ < \\__, | | | | |\n | | / /_ ___) | | | ___) | | (_) | / / | (_) | / / | |_| |\n |_| |____| |____/ |_| |____/ \\___/ /_/ \\___/ /_/ \\___/\nA test with number 725:\n ______ ___ _____\n |____ | |__ \\ | ____|\n / / ) | | |__\n / / / / |___ \\\n / / / /_ ___) |\n /_/ |____| |____/\nRun Code Online (Sandbox Code Playgroud)\n\n更新
\n\n当我发现我失去了当我的答案被选为最佳答案时获得的积分时,我感到很不愉快。看来15分是为了“更大的答案”,我有兴趣恢复我的15分,所以我们开始......
\n\n最终的 Ascii-art 横幅程序是Figlet,它使用在名为“FIGfonts”的 .flf 扩展名的文件中定义的字体。有数百种FIGfont;您可以在Figlet 字体库中浏览其中一些。
\n\nFigBat.bat是我前段时间写的一个与FIGfonts兼容的批处理程序。这里是:
\n\n@echo off\n\nrem Windows/DOS Batch version of FIGlet program: display text using a FIGfont\nrem http://www.jave.de/figlet/fonts.html http://www.figlet.org/\nrem FIGBat.bat version 1.0 - Antonio Perez Ayala - May/12/2012\n\nrem This program does not perform fitting nor smushing\n\nsetlocal EnableDelayedExpansion\nset specialChar[=exclam\nset specialChar["]=quote\nset specialChar[*]=star\nset specialChar[?]=question\nset specialChar[~]=tilde\nset charSet=" " exclam] quote # $ percent "&" \' ( ")" star + "," - . / ^\n 0 1 2 3 4 5 6 7 8 9 colon ";" "<" equal ">" question ^\n @ A B C D E F G H I J K L M N O ^\n P Q R S T U V W X Y Z [ \\ ] caret _ ^\n ` _a _b _c _d _e _f _g _h _i _j _k _l _m _n _o ^\n _p _q _r _s _t _u _v _w _x _y _z { "|" } tilde ^\n \xc3\x84 \xc3\x96 \xc3\x9c \xc3\xa4 \xc3\xb6 \xc3\xbc \xc3\x9f\nrem Ascii: 196 214 220 228 246 252 223 Standard German FIGChars\nset lowcaseLetters=a b c d e f g h i j k l m n o p q r s t u v w x y z\n\nset font=solid\nset "dir=%~DP0"\nREM set alignment=\nREM set outputWidth=8190\nset outputColor=\nset multiColor=\n\n\nrem Process switches\n\nif "%~1" neq "/?" if "%~1" neq "-?" goto checkNextSwitch\necho Display text using a FIGfont\necho/\necho FIGBat [/f font] [/d dir] [/c^|l^|r] [/t^|w width] [/a attr] [word ...]\necho/\necho /f select a font file.\necho /d change the directory for fonts.\necho /c centers the output.\necho /l left-aligns the output.\necho /r right-aligns the output.\necho /t sets the output width to the terminal width.\necho /w specifies a custom output width.\necho /a sets the output color:\necho /a bf set color as attribute (see COLOR /? for more info)\necho /a RB set colors as Rainbow Bands\necho /a MC set Multi-color Characters in random order\necho/\necho word ... Text to display. If not given, read lines to show from STDIN.\necho/\necho /c /l /r switches may include a number separated by equal-sign that define\necho a left margin at which the alignment start.\necho/\necho /t /w switches may include a S or D letter separated by equal-sign that\necho indicate to enclose the FIGure into a frame of Single or Double lines.\necho/\necho For example:\necho figbat /c=19 /w=s 41 Text centered into a frame between columns 20 and 60\necho/\necho Multiple switches can NOT be combined in one; write each one individually.\necho/\ngoto :EOF\n\n:switch/F\nset "font=%~N2"\ngoto shift2\n\n:switch/D\nset "dir=%~2"\ngoto shift2\n\n:switch/W\nset outputWidth=%2\ngoto shift2\n\n:switch/A\nset outputColor=%2\nif /I %2 equ MC (\n rem Activate Multi-color Characters\n set multiColor=1\n)\nif /I %2 equ RB (\n rem Define colors as Rainbow Bands\n set lastColor=0\n for %%a in ( E D C B A 9 6 5 4 3 2 1 ) do (\n set /A lastColor+=1\n set color[!lastColor!]=%%a\n )\n set outputColor=!color[1]!\n set rainbowBand=1\n)\n:shift2\nshift\ngoto shift1\n\n:switch/C\nset alignment=center\ngoto shift1\n\n:switch/L\nset alignment=left\ngoto shift1\n\n:switch/R\nset alignment=right\ngoto shift1\n\n:switch/T\nfor /F "skip=4 tokens=2" %%a in (\'mode con /status\') do (\n set outputWidth=%%a\n goto shift1\n)\n:shift1\nshift\n\n:checkNextSwitch\nfor %%a in (/ -) do (\n for %%b in (f d c l r t w a) do if /I "%~1" equ "%%a%%b" goto switch/%%b\n)\n\n\nrem Load the FIGfont file\nif "%dir:~-1%" == "\\" set "dir=%dir:~0,-1%"\nif not exist "%dir%\\%font%.flf" (\n echo FIGfont file not found: "%dir%\\%font%.flf"\n goto :EOF\n)\ncall :loadFIGfont < "%dir%\\%font%.flf"\n\nrem Show text from parameters or from input lines\nif "%~1" equ "" goto readNextLine\n\nset "line=%~1"\n:getNextWord\n shift\n if "%~1" neq "" set "line=%line% %~1" & goto getNextWord\ncall :showFIGure line\ngoto :EOF\n\n:readNextLine\n set line=\n set /P line=\n if not defined line goto :EOF\n call :showFIGure line\n goto readNextLine\n:EOF\n\n\nFormat of HeaderLine in a FIGfont.flf file:\n\n#Token in FOR /F "tokens=... Batch command\n\n1 - Signature&Hardblank, for example: f1f2a$ (hard blank is usually $)\n2 - Height (of FIGcharacters in lines)\n3 - Baseline (height of font from baseline up)\n4 - Max_Lenght (width of the widest FIGcharacter, plus a small factor)\n5 - Old_Layout (default smushmode for this font)\n6 - Comment_Lines (between HeaderLine and the first FIGcharacter)\n7 - Print_Direction (usually 0)\n8 - Full_Layout (detailed smushmode specification)\n9 - Codetag_Count (number of FIGcharacters in the font minus 102)\n\n\nrem Load a FIGfont.flf file\n\n:loadFIGfont < FIGfont.flf\nrem Get font parameters from Header line\nset /P HeaderLine=\nfor /F "tokens=1,2,6" %%a in ("%HeaderLine%") do (\n set firstToken=%%a\n set Height=%%b\n set Comment_Lines=%%c\n)\nset Hardblank=%firstToken:~-1%\nrem Skip comment lines\nfor /L %%a in (1,1,%Comment_Lines%) do set /P =\nrem Load FIGchars in "FIG<char><line>=sub-chars" variables\nfor %%a in (%charSet%) do (\n for /L %%b in (1,1,%Height%) do (\n set /P "FIG%%~a%%b="\n rem Remove one or two end marks\n set "endmark=!FIG%%~a%%b:~-1!"\n set "FIG%%~a%%b=!FIG%%~a%%b:~0,-1!"\n if "!FIG%%~a%%b:~-1!" equ "!endmark!" set "FIG%%~a%%b=!FIG%%~a%%b:~0,-1!"\n rem Replace hard blanks by spaces (no smushing)\n if "!FIG%%~a%%b!" neq "" set "FIG%%~a%%b=!FIG%%~a%%b:%Hardblank%= !"\n )\n)\nexit /B\n\n\nrem Show an Ascii string as a FIGure\n\n:showFIGure stringVar\n\nrem Get lenght of Ascii string (1024 characters max)\nset textLen=0\nfor /L %%a in (9,-1,0) do (\n set /A "bit=1<<%%a, lastLen=bit+textLen"\n for %%B in (!lastLen!) do if "!%1:~%%B,1!" neq "" set textLen=%%B\n )\n)\nrem Convert Ascii characters into the charSet used in FIGcharacters\nfor /L %%a in (0,1,%textLen%) do (\n set "char=!%1:~%%a,1!"\n call :changeSpecial char="!char!"\n set char[%%a]=!char!\n)\nrem Randomize color order for Multicolor Characters mode\nif defined multiColor (\n set "colors= F E D C B A 9 8 7 6 5 4 3 2 1 "\n set lastColor=0\n for /L %%a in (15,-1,2) do (\n set /A "lastColor+=1, randomColor=(!random!*%%a)/32768+1"\n call :moveColor !randomColor!\n )\n set /A lastColor+=1\n set color[!lastColor!]=!colors: =!\n)\nrem Show the equivalent FIGure\nfor /L %%a in (1,1,%Height%) do (\n if defined multiColor (\n set multiColor=1\n for /L %%b in (0,1,%textLen%) do (\n REM PATCH TO AVOID ERRORS WHEN SHOW QUOTES :"=\'\n for /F "tokens=1,2 delims=%Hardblank%" %%C in ("!char[%%b]!%Hardblank%!multiColor!") do ColorMsg !color[%%D]! "!FIG%%~C%%a:"=""!"\n set /A multiColor+=1\n if !multiColor! gtr !lastColor! (\n set multiColor=1\n )\n )\n echo/\n ) else (\n set FIGline=\n for /L %%b in (0,1,%textLen%) do (\n for %%C in ("!char[%%b]!") do set FIGline=!FIGline!!FIG%%~C%%a!\n )\n if defined outputColor (\n REM PATCH TO AVOID ERRORS WHEN SHOW QUOTES :"=\'\n ColorMsg !outputColor! "!FIGline:"=""!"\n echo/\n if defined rainbowBand (\n set /A rainbowBand+=1\n if !rainbowBand! gtr !lastColor! (\n set rainbowBand=1\n )\n for %%B in (!rainbowBand!) do set outputColor=!color[%%B]!\n )\n ) else (\n echo(!FIGline!\n )\n )\n)\nexit /B\n\n\nrem Auxiliary subroutine for Randomize colors\n\n:moveColor index\nfor /F "tokens=%1" %%a in ("%colors%") do (\n set color[%lastColor%]=%%a\n set colors=!colors: %%a = !\n)\nexit /B\n\n\nrem Change characters that can not be easily managed in a Batch file\n\n:changeSpecial changedChar="!originalChar!"\nrem Change the special characters that can be included in a variable name\nset "special=!specialChar[%~2]!"\nif "!special!" equ "specialChar[:]" set special=colon\nif defined special set %1=%special%& exit /B\nrem Change the rest of special characters\nif "%~2" equ "" set special=percent\nif "%~2" equ "=" set special=equal\nif "%~2" equ "^^" set special=caret\nif defined special set %1=%special%& exit /B\nrem Change lowcase letters (mistaken for upcase letters in variable names)\nfor %%a in (%lowcaseLetters%) do (\n if "%~2" equ "%%a" (\n set %1=_%%a\n )\n)\nexit /B\nRun Code Online (Sandbox Code Playgroud)\n\n这是使用 FigBat.bat 程序显示的一些现有 Figfonts 的示例:
\n\n================= Alligator3.flf: 9462 bytes ================\n ::: ::: ::: ::::::::::: :::::::: ::: ::::::::::: :::::::: ::::::::: :::::::: \n :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: \n +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ \n+#++:++#++: +#+ +#+ +#+ :#: +#++:++#++: +#+ +#+ +:+ +#++:++#: +#++: \n+#+ +#+ +#+ +#+ +#+ +#+ +#+# +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ \n#+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# \n### ### ########## ########## ########### ######## ### ### ### ######## ### ### ######## \n================= Alpha.flf: 36168 bytes ================\n _____ _____ _____ _____ _____ \n /\\ \\ /\\ \\ /\\ \\ /\\ \\ /\\ \\ \n /::\\ \\ /::\\____\\ /::\\ \\ /::\\____\\ /::\\ \\ \n /::::\\ \\ /:::/ / /::::\\ \\ /:::/ / /::::\\ \\ \n /::::::\\ \\ /:::/ / /::::::\\ \\ /:::/ / /::::::\\ \\ \n /:::/\\:::\\ \\ /:::/ / /:::/\\:::\\ \\ /:::/ / /:::/\\:::\\ \\ \n /:::/__\\:::\\ \\ /:::/ / /:::/__\\:::\\ \\ /:::/____/ /:::/__\\:::\\ \\ \n /::::\\ \\:::\\ \\ /:::/ / /::::\\ \\:::\\ \\ /::::\\ \\ /::::\\ \\:::\\ \\ \n /::::::\\ \\:::\\ \\ /:::/ / /::::::\\ \\:::\\ \\ /::::::\\ \\ _____ /::::::\\ \\:::\\ \\ \n /:::/\\:::\\ \\:::\\ \\ /:::/ / /:::/\\:::\\ \\:::\\____\\ /:::/\\:::\\ \\ /\\ \\ /:::/\\:::\\ \\:::\\ \\ \n/:::/ \\:::\\ \\:::\\____\\/:::/____/ /:::/ \\:::\\ \\:::| |/:::/ \\:::\\ /::\\____\\/:::/ \\:::\\ \\:::\\____\\\n\\::/ \\:::\\ /:::/ /\\:::\\ \\ \\::/ \\:::\\ /:::|____|\\::/ \\:::\\ /:::/ /\\::/ \\:::\\ /:::/ /\n \\/____/ \\:::\\/:::/ / \\:::\\ \\ \\/_____/\\:::\\/:::/ / \\/____/ \\:::\\/:::/ / \\/____/ \\:::\\/:::/ / \n \\::::::/ / \\:::\\ \\ \\::::::/ / \\::::::/ / \\::::::/ / \n \\::::/ / \\:::\\ \\ \\::::/ / \\::::/ / \\::::/ / \n /:::/ / \\:::\\ \\ \\::/____/ /:::/ / /:::/ / \n /:::/ / \\:::\\ \\ ~~ /:::/ / /:::/ / \n /:::/ / \\:::\\ \\ /:::/ / /:::/ / \n /:::/ / \\:::\\____\\ /:::/ / /:::/ / \n \\::/ / \\::/ / \\::/ / \\::/ / \n \\/____/ \\/____/ \\/____/ \\/____/ \n\n================= Banner.flf: 34391 bytes ================\n ###### ####### \n # # ## # # # # ###### ##### # #### # # ##### \n # # # # ## # ## # # # # # # # ## # # \n ###### # # # # # # # # ##### # # ##### # # # # # # \n # # ###### # # # # # # # ##### # # # # # # # \n # # # # # ## # ## # # # # # # # ## # \n ###### # # # # # # ###### # # # #### # # # \n\n================= Bear.flf: 10459 bytes ================\n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) \n / ._. \\ / ._. \\ / ._. \\ / ._. \\ / ._. \\ / ._. \\ / ._. \\ / ._. \\ \n __\\( Y )/__ __\\( Y )/__ __\\( Y )/__ __\\( Y )/__ __\\( Y )/__ __\\( Y )/__ __\\( Y )/__ __\\( Y )/__ \n(_.-/\'-\'\\-._)(_.-/\'-\'\\-._)(_.-/\'-\'\\-._)(_.-/\'-\'\\-._) (_.-/\'-\'\\-._)(_.-/\'-\'\\-._)(_.-/\'-\'\\-._)(_.-/\'-\'\\-._)\n || B || || E || || A || || R || || F || || O || || N || || T || \n _.\' `-\' \'._ _.\' `-\' \'._ _.\' `-\' \'._ _.\' `-\' \'._ _.\' `-\' \'._ _.\' `-\' \'._ _.\' `-\' \'._ _.\' `-\' \'._ \n(.-./`-\'\\.-.)(.-./`-\'\\.-.)(.-./`-\'\\.-.)(.-./`-`\\.-.) (.-./`-\'\\.-.)(.-./`-\'\\.-.)(.-./`-\'\\.-.)(.-./`-\'\\.-.)\n `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' `-\' \n================= BulbHead.flf: 4454 bytes ================\n ____ __ __ __ ____ _ _ ____ __ ____ ____ _____ _ _ ____ \n( _ \\( )( )( ) ( _ \\( )_( )( ___) /__\\ ( _ \\ ( ___)( _ )( \\( )(_ _)\n ) _ < )(__)( )(__ ) _ < ) _ ( )__) /(__)\\ )(_) ) )__) )(_)( ) ( )( \n(____/(______)(____)(____/(_) (_)(____)(__)(__)(____/ (__) (_____)(_)\\_) (__) \n================= DancingFont.flf: 8382 bytes ================\n ____ _ _ _ ____ _ _ ____ _____ U ___ u _ _ _____ \n | _"\\ U /"\\ u | \\ |"| U /"___| ___ | \\ |"| U /"___|u |" ___| \\/"_ \\/ | \\ |"| |_ " _| \n/| | | | \\/ _ \\/ <| \\| |> \\| | u |_"_| <| \\| |> \\| | _ / U| |_ u | | | | <| \\| |> | | \nU| |_| |\\ / ___ \\ U| |\\ |u | |/__ | | U| |\\ |u | |_| | \\| _|/ .-,_| |_| | U| |\\ |u /| |\\ \n |____/ u /_/ \\_\\ |_| \\_| \\____| U/| |\\u |_| \\_| \\____| |_| \\_)-\\___/ |_| \\_| u |_|U \n |||_ \\\\ >> || \\\\,-. _// \\\\ .-,_|___|_,-. || \\\\,-. _)(|_ )(\\\\,- \\\\ || \\\\,-. _// \\\\_ \n (__)_) (__) (__) (_") (_/ (__)(__) \\_)-\' \'-(_/ (_") (_/ (__)__) (__)(_/ (__) (_") (_/ (__) (__) \n================= Doom.flf: 8386 bytes ================\n______ ______ _ \n| _ \\ | ___| | | \n| | | | ___ ___ _ __ ___ | |_ ___ _ __ | |_ \n| | | | / _ \\ / _ \\ | \'_ ` _ \\ | _| / _ \\ | \'_ \\ | __|\n| |/ / | (_) || (_) || | | | | | | | | (_) || | | || |_ \n|___/ \\___/ \\___/ |_| |_| |_| \\_| \\___/ |_| |_| \\__|\n\n\n================= Epic.flf: 10789 bytes ================\n _______ _______ _________ _______ _______ _______ _ _________\n( ____ \\( ____ )\\__ __/( ____ \\ ( ____ \\( ___ )( ( /|\\__ __/\n| ( \\/| ( )| ) ( | ( \\/ | ( \\/| ( ) || \\ ( | ) ( \n| (__ | (____)| | | | | | (__ | | | || \\ | | | | \n| __) | _____) | | | | | __) | | | || (\\ \\) | | | \n| ( | ( | | | | | ( | | | || | \\ | | | \n| (____/\\| ) ___) (___| (____/\\ | ) | (___) || ) \\ | | | \n(_______/|/ \\_______/(_______/ |/ (_______)|/ )_) )_( \n\n================= Graceful.flf: 9364 bytes ================\n ___ ____ __ ___ ____ ____ _ _ __ ____ __ __ _ ____ \n / __)( _ \\ / _\\ / __)( __)( __)/ )( \\( ) ( __) / \\ ( ( \\(_ _)\n( (_ \\ ) // \\( (__ ) _) ) _) ) \\/ (/ (_/\\ ) _) ( O )/ / )( \n \\___/(__\\_)\\_/\\_/ \\___)(____)(__) \\____/\\____/ (__) \\__/ \\_)__) (__) \n================= Isometric1.flf: 12753 bytes ================\n ___ ___ ___ ___ ___ ___ ___ \n ___ /\\ \\ /\\ \\ /\\__\\ /\\ \\ /\\ \\ /\\ \\ ___ /\\ \\ \n /\\ \\ /::\\ \\ /::\\ \\ /::| |