问题
here is the font
:: __ ___ ____ _ _ _____ __ ______ ___ ___ ___
:: /_ | |__ \ |___ \ | || | | ____| / / |____ | / _ \ / _ \ / _ \
:: | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) | | | | |
:: | | / / |__ < |__ _| |___ \ | '_ \ / / > _ < \__, | | | | |
:: | | / /_ ___) | | | ___) | | (_) | / / | (_) | / / | |_| |
:: |_| |____| |____/ |_| |____/ \___/ /_/ \___/ /_/ \___/
Honestly I have no idea on how to refer to multiple line characters right next to each other..
回答1:
Give this a try :)
@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
-- OUTPUT --
The digits:
___ __ ___ ____ _ _ _____ __ ______ ___ ___
/ _ \ /_ | |__ \ |___ \ | || | | ____| / / |____ | / _ \ / _ \
| | | | | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) |
| | | | | | / / |__ < |__ _| |___ \ | '_ \ / / > _ < \__, |
| |_| | | | / /_ ___) | | | ___) | | (_) | / / | (_) | / /
\___/ |_| |____| |____/ |_| |____/ \___/ /_/ \___/ /_/
The answer to life, the universe, and everything:
_ _ ___
| || | |__ \
| || |_ ) |
|__ _| / /
| | / /_
|_| |____|
Update
I've extended Aacini's idea to make it easy to change fonts; I've actually created a library of batch routines to facilitate printing in multiple fonts. Fonts can be added by appending to the library script, or by creating a separate font script for each new font. The posted library has two fonts built in - Big, and Standard. I've also posted a stand alone font script for a Small font. The font script(s) must be in the same directory as the main library.
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
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
Full documentation is built into Banner.bat
Sample usage:
call banner printStr standard "Hello world!"
回答2:
echo __ ___ ____ _ _ _____ __ ______ ___ ___ ___
echo /_ ^| ^|__ \ ^|___ \ ^| ^|^| ^| ^| ____^| / / ^|____ ^| / _ \ / _ \ / _ \
echo ^| ^| ) ^| __) ^| ^| ^|^| ^|_ ^| ^|__ / /_ / / ^| (_) ^| ^| (_) ^| ^| ^| ^| ^|
echo ^| ^| / / ^|__ ^< ^|__ _^| ^|___ \ ^| '_ \ / / ^> _ ^< \__, ^| ^| ^| ^| ^|
echo ^| ^| / /_ ___) ^| ^| ^| ___) ^| ^| (_) ^| / / ^| (_) ^| / / ^| ^|_^| ^|
echo ^|_^| ^|____^| ^|____/ ^|_^| ^|____/ \___/ /_/ \___/ /_/ \___/
You can try with subroutines (or macros ):
call :echo_one
call :echo_two
:echo_one
echo __
echo /_ ^|
echo ^| ^|
echo ^| ^|
echo ^| ^|
echo ^|_^|
goto :eof
:echo_two
echo ___
echo ^|__ \
echo ) ^|
echo / /
echo / /_
echo ^|____^|
goto :eof
回答3:
The Batch file below allows you to easily change the font:
@echo off
setlocal EnableDelayedExpansion
set "font[1]= ___ __ ___ ____ _ _ _____ __ ______ ___ ___ "
set "font[2]= / _ \ /_ | |__ \ |___ \ | || | | ____| / / |____ | / _ \ / _ \ "
set "font[3]= | | | | | | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) |"
set "font[4]= | | | | | | / / |__ < |__ _| |___ \ | '_ \ / / > _ < \__, |"
set "font[5]= | |_| | | | / /_ ___) | | | ___) | | (_) | / / | (_) | / / "
set "font[6]= \___/ |_| |____| |____/ |_| |____/ \___/ /_/ \___/ /_/ "
set fontWides=8 5 7 8 9 8 8 9 8 8
set fontLines=6
for /L %%i in (1,1,%fontLines%) do (
set n=0
for %%w in (%fontWides%) do (
set num[%%i][!n!]=!font[%%i]:~0,%%w!
set font[%%i]=!font[%%i]:~%%w!
set /A n+=1
)
)
echo All digits:
call :numBanner 1234567890
echo A test with number 725:
call :numBanner 725
goto :EOF
:numBanner number
set number=%1
set "digits="
:nextDigit
set digits=%digits% %number:~0,1%
set number=%number:~1%
if defined number goto nextDigit
for /L %%i in (1,1,%fontLines%) do (
set "line="
for %%d in (%digits%) do (
set line=!line!!num[%%i][%%d]!
)
echo !line!
)
exit /B
Output:
All digits:
__ ___ ____ _ _ _____ __ ______ ___ ___ ___
/_ | |__ \ |___ \ | || | | ____| / / |____ | / _ \ / _ \ / _ \
| | ) | __) | | || |_ | |__ / /_ / / | (_) | | (_) | | | | |
| | / / |__ < |__ _| |___ \ | '_ \ / / > _ < \__, | | | | |
| | / /_ ___) | | | ___) | | (_) | / / | (_) | / / | |_| |
|_| |____| |____/ |_| |____/ \___/ /_/ \___/ /_/ \___/
A test with number 725:
______ ___ _____
|____ | |__ \ | ____|
/ / ) | | |__
/ / / / |___ \
/ / / /_ ___) |
/_/ |____| |____/
Update
I got an unpleasant surprise when I discovered that I lost the points I earned when my answer was selected as Best answer. It seems that the 15 points are for the "bigger answer" and I am interested in recover my 15 points, so here we go...
The ultimate Ascii-art banner program is FIGlet, that use fonts defined in files with .flf extension called "FIGfonts". There are hundreds of FIGfonts; you may browse some of them in FIGlet Fonts Library.
FIGBat.bat is a Batch program compatible with FIGfonts that I wrote some time ago. Here it is:
@echo off
rem Windows/DOS Batch version of FIGlet program: display text using a FIGfont
rem http://www.jave.de/figlet/fonts.html http://www.figlet.org/
rem FIGBat.bat version 1.0 - Antonio Perez Ayala - May/12/2012
rem This program does not perform fitting nor smushing
setlocal EnableDelayedExpansion
set specialChar[=exclam
set specialChar["]=quote
set specialChar[*]=star
set specialChar[?]=question
set specialChar[~]=tilde
set charSet=" " exclam] quote # $ percent "&" ' ( ")" star + "," - . / ^
0 1 2 3 4 5 6 7 8 9 colon ";" "<" equal ">" question ^
@ 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 [ \ ] caret _ ^
` _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 { "|" } tilde ^
Ä Ö Ü ä ö ü ß
rem Ascii: 196 214 220 228 246 252 223 Standard German FIGChars
set 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
set font=solid
set "dir=%~DP0"
REM set alignment=
REM set outputWidth=8190
set outputColor=
set multiColor=
rem Process switches
if "%~1" neq "/?" if "%~1" neq "-?" goto checkNextSwitch
echo Display text using a FIGfont
echo/
echo FIGBat [/f font] [/d dir] [/c^|l^|r] [/t^|w width] [/a attr] [word ...]
echo/
echo /f select a font file.
echo /d change the directory for fonts.
echo /c centers the output.
echo /l left-aligns the output.
echo /r right-aligns the output.
echo /t sets the output width to the terminal width.
echo /w specifies a custom output width.
echo /a sets the output color:
echo /a bf set color as attribute (see COLOR /? for more info)
echo /a RB set colors as Rainbow Bands
echo /a MC set Multi-color Characters in random order
echo/
echo word ... Text to display. If not given, read lines to show from STDIN.
echo/
echo /c /l /r switches may include a number separated by equal-sign that define
echo a left margin at which the alignment start.
echo/
echo /t /w switches may include a S or D letter separated by equal-sign that
echo indicate to enclose the FIGure into a frame of Single or Double lines.
echo/
echo For example:
echo figbat /c=19 /w=s 41 Text centered into a frame between columns 20 and 60
echo/
echo Multiple switches can NOT be combined in one; write each one individually.
echo/
goto :EOF
:switch/F
set "font=%~N2"
goto shift2
:switch/D
set "dir=%~2"
goto shift2
:switch/W
set outputWidth=%2
goto shift2
:switch/A
set outputColor=%2
if /I %2 equ MC (
rem Activate Multi-color Characters
set multiColor=1
)
if /I %2 equ RB (
rem Define colors as Rainbow Bands
set lastColor=0
for %%a in ( E D C B A 9 6 5 4 3 2 1 ) do (
set /A lastColor+=1
set color[!lastColor!]=%%a
)
set outputColor=!color[1]!
set rainbowBand=1
)
:shift2
shift
goto shift1
:switch/C
set alignment=center
goto shift1
:switch/L
set alignment=left
goto shift1
:switch/R
set alignment=right
goto shift1
:switch/T
for /F "skip=4 tokens=2" %%a in ('mode con /status') do (
set outputWidth=%%a
goto shift1
)
:shift1
shift
:checkNextSwitch
for %%a in (/ -) do (
for %%b in (f d c l r t w a) do if /I "%~1" equ "%%a%%b" goto switch/%%b
)
rem Load the FIGfont file
if "%dir:~-1%" == "\" set "dir=%dir:~0,-1%"
if not exist "%dir%\%font%.flf" (
echo FIGfont file not found: "%dir%\%font%.flf"
goto :EOF
)
call :loadFIGfont < "%dir%\%font%.flf"
rem Show text from parameters or from input lines
if "%~1" equ "" goto readNextLine
set "line=%~1"
:getNextWord
shift
if "%~1" neq "" set "line=%line% %~1" & goto getNextWord
call :showFIGure line
goto :EOF
:readNextLine
set line=
set /P line=
if not defined line goto :EOF
call :showFIGure line
goto readNextLine
:EOF
Format of HeaderLine in a FIGfont.flf file:
#Token in FOR /F "tokens=... Batch command
1 - Signature&Hardblank, for example: f1f2a$ (hard blank is usually $)
2 - Height (of FIGcharacters in lines)
3 - Baseline (height of font from baseline up)
4 - Max_Lenght (width of the widest FIGcharacter, plus a small factor)
5 - Old_Layout (default smushmode for this font)
6 - Comment_Lines (between HeaderLine and the first FIGcharacter)
7 - Print_Direction (usually 0)
8 - Full_Layout (detailed smushmode specification)
9 - Codetag_Count (number of FIGcharacters in the font minus 102)
rem Load a FIGfont.flf file
:loadFIGfont < FIGfont.flf
rem Get font parameters from Header line
set /P HeaderLine=
for /F "tokens=1,2,6" %%a in ("%HeaderLine%") do (
set firstToken=%%a
set Height=%%b
set Comment_Lines=%%c
)
set Hardblank=%firstToken:~-1%
rem Skip comment lines
for /L %%a in (1,1,%Comment_Lines%) do set /P =
rem Load FIGchars in "FIG<char><line>=sub-chars" variables
for %%a in (%charSet%) do (
for /L %%b in (1,1,%Height%) do (
set /P "FIG%%~a%%b="
rem Remove one or two end marks
set "endmark=!FIG%%~a%%b:~-1!"
set "FIG%%~a%%b=!FIG%%~a%%b:~0,-1!"
if "!FIG%%~a%%b:~-1!" equ "!endmark!" set "FIG%%~a%%b=!FIG%%~a%%b:~0,-1!"
rem Replace hard blanks by spaces (no smushing)
if "!FIG%%~a%%b!" neq "" set "FIG%%~a%%b=!FIG%%~a%%b:%Hardblank%= !"
)
)
exit /B
rem Show an Ascii string as a FIGure
:showFIGure stringVar
rem Get lenght of Ascii string (1024 characters max)
set textLen=0
for /L %%a in (9,-1,0) do (
set /A "bit=1<<%%a, lastLen=bit+textLen"
for %%B in (!lastLen!) do if "!%1:~%%B,1!" neq "" set textLen=%%B
)
)
rem Convert Ascii characters into the charSet used in FIGcharacters
for /L %%a in (0,1,%textLen%) do (
set "char=!%1:~%%a,1!"
call :changeSpecial char="!char!"
set char[%%a]=!char!
)
rem Randomize color order for Multicolor Characters mode
if defined multiColor (
set "colors= F E D C B A 9 8 7 6 5 4 3 2 1 "
set lastColor=0
for /L %%a in (15,-1,2) do (
set /A "lastColor+=1, randomColor=(!random!*%%a)/32768+1"
call :moveColor !randomColor!
)
set /A lastColor+=1
set color[!lastColor!]=!colors: =!
)
rem Show the equivalent FIGure
for /L %%a in (1,1,%Height%) do (
if defined multiColor (
set multiColor=1
for /L %%b in (0,1,%textLen%) do (
REM PATCH TO AVOID ERRORS WHEN SHOW QUOTES :"='
for /F "tokens=1,2 delims=%Hardblank%" %%C in ("!char[%%b]!%Hardblank%!multiColor!") do ColorMsg !color[%%D]! "!FIG%%~C%%a:"=""!"
set /A multiColor+=1
if !multiColor! gtr !lastColor! (
set multiColor=1
)
)
echo/
) else (
set FIGline=
for /L %%b in (0,1,%textLen%) do (
for %%C in ("!char[%%b]!") do set FIGline=!FIGline!!FIG%%~C%%a!
)
if defined outputColor (
REM PATCH TO AVOID ERRORS WHEN SHOW QUOTES :"='
ColorMsg !outputColor! "!FIGline:"=""!"
echo/
if defined rainbowBand (
set /A rainbowBand+=1
if !rainbowBand! gtr !lastColor! (
set rainbowBand=1
)
for %%B in (!rainbowBand!) do set outputColor=!color[%%B]!
)
) else (
echo(!FIGline!
)
)
)
exit /B
rem Auxiliary subroutine for Randomize colors
:moveColor index
for /F "tokens=%1" %%a in ("%colors%") do (
set color[%lastColor%]=%%a
set colors=!colors: %%a = !
)
exit /B
rem Change characters that can not be easily managed in a Batch file
:changeSpecial changedChar="!originalChar!"
rem Change the special characters that can be included in a variable name
set "special=!specialChar[%~2]!"
if "!special!" equ "specialChar[:]" set special=colon
if defined special set %1=%special%& exit /B
rem Change the rest of special characters
if "%~2" equ "" set special=percent
if "%~2" equ "=" set special=equal
if "%~2" equ "^^" set special=caret
if defined special set %1=%special%& exit /B
rem Change lowcase letters (mistaken for upcase letters in variable names)
for %%a in (%lowcaseLetters%) do (
if "%~2" equ "%%a" (
set %1=_%%a
)
)
exit /B
This is a sample of a few of the existent FIGfonts displayed with FIGBat.bat program:
================= Alligator3.flf: 9462 bytes ================
::: ::: ::: ::::::::::: :::::::: ::: ::::::::::: :::::::: ::::::::: ::::::::
:+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
+#++:++#++: +#+ +#+ +#+ :#: +#++:++#++: +#+ +#+ +:+ +#++:++#: +#++:
+#+ +#+ +#+ +#+ +#+ +#+ +#+# +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+#
### ### ########## ########## ########### ######## ### ### ### ######## ### ### ########
================= Alpha.flf: 36168 bytes ================
_____ _____ _____ _____ _____
/\ \ /\ \ /\ \ /\ \ /\ \
/::\ \ /::\____\ /::\ \ /::\____\ /::\ \
/::::\ \ /:::/ / /::::\ \ /:::/ / /::::\ \
/::::::\ \ /:::/ / /::::::\ \ /:::/ / /::::::\ \
/:::/\:::\ \ /:::/ / /:::/\:::\ \ /:::/ / /:::/\:::\ \
/:::/__\:::\ \ /:::/ / /:::/__\:::\ \ /:::/____/ /:::/__\:::\ \
/::::\ \:::\ \ /:::/ / /::::\ \:::\ \ /::::\ \ /::::\ \:::\ \
/::::::\ \:::\ \ /:::/ / /::::::\ \:::\ \ /::::::\ \ _____ /::::::\ \:::\ \
/:::/\:::\ \:::\ \ /:::/ / /:::/\:::\ \:::\____\ /:::/\:::\ \ /\ \ /:::/\:::\ \:::\ \
/:::/ \:::\ \:::\____\/:::/____/ /:::/ \:::\ \:::| |/:::/ \:::\ /::\____\/:::/ \:::\ \:::\____\
\::/ \:::\ /:::/ /\:::\ \ \::/ \:::\ /:::|____|\::/ \:::\ /:::/ /\::/ \:::\ /:::/ /
\/____/ \:::\/:::/ / \:::\ \ \/_____/\:::\/:::/ / \/____/ \:::\/:::/ / \/____/ \:::\/:::/ /
\::::::/ / \:::\ \ \::::::/ / \::::::/ / \::::::/ /
\::::/ / \:::\ \ \::::/ / \::::/ / \::::/ /
/:::/ / \:::\ \ \::/____/ /:::/ / /:::/ /
/:::/ / \:::\ \ ~~ /:::/ / /:::/ /
/:::/ / \:::\ \ /:::/ / /:::/ /
/:::/ / \:::\____\ /:::/ / /:::/ /
\::/ / \::/ / \::/ / \::/ /
\/____/ \/____/ \/____/ \/____/
================= Banner.flf: 34391 bytes ================
###### #######
# # ## # # # # ###### ##### # #### # # #####
# # # # ## # ## # # # # # # # ## # #
###### # # # # # # # # ##### # # ##### # # # # # #
# # ###### # # # # # # # ##### # # # # # # #
# # # # # ## # ## # # # # # # # ## #
###### # # # # # # ###### # # # #### # # #
================= Bear.flf: 10459 bytes ================
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
(c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c) (c).-.(c)
/ ._. \ / ._. \ / ._. \ / ._. \ / ._. \ / ._. \ / ._. \ / ._. \
__\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/__ __\( Y )/__
(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._) (_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
|| B || || E || || A || || R || || F || || O || || N || || T ||
_.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._ _.' `-' '._
(.-./`-'\.-.)(.-./`-'\.-.)(.-./`-'\.-.)(.-./`-`\.-.) (.-./`-'\.-.)(.-./`-'\.-.)(.-./`-'\.-.)(.-./`-'\.-.)
`-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-' `-'
================= BulbHead.flf: 4454 bytes ================
____ __ __ __ ____ _ _ ____ __ ____ ____ _____ _ _ ____
( _ \( )( )( ) ( _ \( )_( )( ___) /__\ ( _ \ ( ___)( _ )( \( )(_ _)
) _ < )(__)( )(__ ) _ < ) _ ( )__) /(__)\ )(_) ) )__) )(_)( ) ( )(
(____/(______)(____)(____/(_) (_)(____)(__)(__)(____/ (__) (_____)(_)\_) (__)
================= DancingFont.flf: 8382 bytes ================
____ _ _ _ ____ _ _ ____ _____ U ___ u _ _ _____
| _"\ U /"\ u | \ |"| U /"___| ___ | \ |"| U /"___|u |" ___| \/"_ \/ | \ |"| |_ " _|
/| | | | \/ _ \/ <| \| |> \| | u |_"_| <| \| |> \| | _ / U| |_ u | | | | <| \| |> | |
U| |_| |\ / ___ \ U| |\ |u | |/__ | | U| |\ |u | |_| | \| _|/ .-,_| |_| | U| |\ |u /| |\
|____/ u /_/ \_\ |_| \_| \____| U/| |\u |_| \_| \____| |_| \_)-\___/ |_| \_| u |_|U
|||_ \\ >> || \\,-. _// \\ .-,_|___|_,-. || \\,-. _)(|_ )(\\,- \\ || \\,-. _// \\_
(__)_) (__) (__) (_") (_/ (__)(__) \_)-' '-(_/ (_") (_/ (__)__) (__)(_/ (__) (_") (_/ (__) (__)
================= Doom.flf: 8386 bytes ================
______ ______ _
| _ \ | ___| | |
| | | | ___ ___ _ __ ___ | |_ ___ _ __ | |_
| | | | / _ \ / _ \ | '_ ` _ \ | _| / _ \ | '_ \ | __|
| |/ / | (_) || (_) || | | | | | | | | (_) || | | || |_
|___/ \___/ \___/ |_| |_| |_| \_| \___/ |_| |_| \__|
================= Epic.flf: 10789 bytes ================
_______ _______ _________ _______ _______ _______ _ _________
( ____ \( ____ )\__ __/( ____ \ ( ____ \( ___ )( ( /|\__ __/
| ( \/| ( )| ) ( | ( \/ | ( \/| ( ) || \ ( | ) (
| (__ | (____)| | | | | | (__ | | | || \ | | | |
| __) | _____) | | | | | __) | | | || (\ \) | | |
| ( | ( | | | | | ( | | | || | \ | | |
| (____/\| ) ___) (___| (____/\ | ) | (___) || ) \ | | |
(_______/|/ \_______/(_______/ |/ (_______)|/ )_) )_(
================= Graceful.flf: 9364 bytes ================
___ ____ __ ___ ____ ____ _ _ __ ____ __ __ _ ____
/ __)( _ \ / _\ / __)( __)( __)/ )( \( ) ( __) / \ ( ( \(_ _)
( (_ \ ) // \( (__ ) _) ) _) ) \/ (/ (_/\ ) _) ( O )/ / )(
\___/(__\_)\_/\_/ \___)(____)(__) \____/\____/ (__) \__/ \_)__) (__)
================= Isometric1.flf: 12753 bytes ================
___ ___ ___ ___ ___ ___ ___
___ /\ \ /\ \ /\__\ /\ \ /\ \ /\ \ ___ /\ \
/\ \ /::\ \ /::\ \ /::| | /::\ \ \:\ \ /::\ \ /\ \ /::\ \
\:\ \ /:/\ \ \ /:/\:\ \ /:|:| | /:/\:\ \ \:\ \ /:/\:\ \ \:\ \ /:/\:\ \
/::\__\ _\:\~\ \ \ /:/ \:\ \ /:/|:|__|__ /::\~\:\ \ /::\ \ /::\~\:\ \ /::\__\ /:/ \:\ \
__/:/\/__/ /\ \:\ \ \__\ /:/__/ \:\__\ /:/ |::::\__\ /:/\:\ \:\__\ /:/\:\__\ /:/\:\ \:\__\ __/:/\/__/ /:/__/ \:\__\
/\/:/ / \:\ \:\ \/__/ \:\ \ /:/ / \/__/~~/:/ / \:\~\:\ \/__/ /:/ \/__/ \/_|::\/:/ / /\/:/ / \:\ \ \/__/
\::/__/ \:\ \:\__\ \:\ /:/ / /:/ / \:\ \:\__\ /:/ / |:|::/ / \::/__/ \:\ \
\:\__\ \:\/:/ / \:\/:/ / /:/ / \:\ \/__/ \/__/ |:|\/__/ \:\__\ \:\ \
\/__/ \::/ / \::/ / /:/ / \:\__\ |:| | \/__/ \:\__\
\/__/ \/__/ \/__/ \/__/ \|__| \/__/
================= Jacky.flf: 12329 bytes ================
________ ____ ____ __ ___ __ __ _________ ____ __ _ ________
(___ ___) ( ) / ___) () ) / __) ) \ / ( (_ _____) / __ \ / \ / ) (___ ___)
) ) / /\ \ / / ( (_/ / \ \ / / ) (___ / / \ \ / /\ \ / / ) )
( ( ( (__) ) ( ( () ( \ \/ / ( ___) ( () () ) ) ) ) ) ) ) ( (
__ ) ) ) ( ( ( () /\ \ \ / ) ( ( () () ) ( ( ( ( ( ( ) )
( (_/ / / /\ \ \ \___ ( ( \ \ )( ( ) \ \__/ / / / \ \/ / ( (
\___/ /__( )__\ \____) ()_) \_\ /__\ \_/ \____/ (_/ \__/ /__\
================= Ogre.flf: 6313 bytes ================
___ ___ _
/___\ __ _ _ __ ___ / __\ ___ _ __ | |_
// // / _` || '__| / _ \ / _\ / _ \ | '_ \ | __|
/ \_// | (_| || | | __/ / / | (_) || | | || |_
\___/ \__, ||_| \___| \/ \___/ |_| |_| \__|
|___/
================= Puffy.flf: 8227 bytes ================
___ ___ ___ ___ _
( _`\ /'___) /'___) ( _`\ ( )_
| |_) ) _ _ | (__ | (__ _ _ | (_(_) _ ___ | ,_)
| ,__/'( ) ( )| ,__) | ,__) ( ) ( ) | _) /'_`\ /' _ `\| |
| | | (_) || | | | | (_) | | | ( (_) )| ( ) || |_
(_) `\___/'(_) (_) `\__, | (_) `\___/'(_) (_)`\__)
( )_| |
`\___/'
================= Rounded.flf: 7432 bytes ================
______ _ _ _______
(_____ \ | | | | (_______) _
_____) ) ___ _ _ ____ __| | _____ __| | _____ ___ ____ _| |_
| __ / / _ \ | | | || _ \ / _ || ___ | / _ | | ___) / _ \ | _ \ (_ _)
| | \ \ | |_| || |_| || | | |( (_| || ____|( (_| | | | | |_| || | | | | |_
|_| |_| \___/ |____/ |_| |_| \____||_____) \____| |_| \___/ |_| |_| \__)
================= Script.flf: 16682 bytes ================
______
() o (_) |
/\ __ ,_ _ _|_ _|_ __ _ _ _|_
/ \/ / | | _|/ \_ | / | |/ \_/ |/ | |
/(__/\___/ |_/|_/ |__/ |_/ (_/ \__/ | |_/ |_/
/|
\|
================= Standard.flf: 30562 bytes ================
____ _ _ _ _____ _
/ ___| | |_ __ _ _ __ __| | __ _ _ __ __| | | ___| ___ _ __ | |_
\___ \ | __| / _` | | '_ \ / _` | / _` | | '__| / _` | | |_ / _ \ | '_ \ | __|
___) | | |_ | (_| | | | | | | (_| | | (_| | | | | (_| | | _| | (_) | | | | | | |_
|____/ \__| \__,_| |_| |_| \__,_| \__,_| |_| \__,_| |_| \___/ |_| |_| \__|
================= Stop.flf: 7504 bytes ================
_ _______
| | _ (_______) _
\ \ | |_ ___ ____ _____ ___ ____ | |_
\ \ | _) / _ \ | _ \ | ___) / _ \ | _ \ | _)
_____) )| |__ | |_| || | | | | | | |_| || | | || |__
(______/ \___) \___/ | ||_/ |_| \___/ |_| |_| \___)
|_|
================= Train.flf: 6983 bytes ================
_____ _ ___ _
|_ _| _ _ __ _ (_) _ _ o O O | __| ___ _ _ | |_
| | | '_| / _` | | | | ' \ o | _| / _ \ | ' \ | _|
_|_|_ _|_|_ \__,_| _|_|_ |_||_| TS__[O] _|_|_ \___/ |_||_| _\__|
_|"""""|_|"""""|_|"""""|_|"""""|_|"""""| {======|_| """ |_|"""""|_|"""""|_|"""""|
"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'./o--000'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
来源:https://stackoverflow.com/questions/19174465/how-would-i-use-some-multi-line-ascii-art-as-my-characters-for-a-counter-batch