You should try something cool like this.
@echo off
mode 200
setlocal
call :Echo.Color.Init
goto main
:Echo.Color %1=Color %2=Str [%3=/n]
setlocal enableDelayedExpansion
set "str=%~2"
:Echo.Color.2
:# Replace path separators in the string, so that the final path still refers to the current path.
set "str=a%ECHO.DEL%!str:\=a%ECHO.DEL%\..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:/=a%ECHO.DEL%/..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:"=\"!"
:# Go to the script directory and search for the trailing -
pushd "%ECHO.DIR%"
findstr /p /r /a:%~1 "^^-" "!str!\..\!ECHO.FILE!" nul
popd
:# Remove the name of this script from the output. (Dependant on its length.)
for /l %%n in (1,1,12) do if not "!ECHO.FILE:~%%n!"=="" <nul set /p "=%ECHO.DEL%"
:# Remove the other unwanted characters "\..\: -"
<nul set /p "=%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%"
:# Append the optional CRLF
if not "%~3"=="" echo.
endlocal & goto :eof
:Echo.Color.Var %1=Color %2=StrVar [%3=/n]
if not defined %~2 goto :eof
setlocal enableDelayedExpansion
set "str=!%~2!"
goto :Echo.Color.2
:Echo.Color.Init
set "ECHO.COLOR=call :Echo.Color"
set "ECHO.DIR=%~dp0"
set "ECHO.FILE=%~nx0"
set "ECHO.FULL=%ECHO.DIR%%ECHO.FILE%"
:# Use prompt to store a backspace into a variable. (Actually backspace+space+backspace)
for /F "tokens=1 delims=#" %%a in ('"prompt #$H# & echo on & for %%b in (1) do rem"') do set "ECHO.DEL=%%a"
goto :eof
:1
:main
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0b "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0b "%random:~-1,1%"
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0b"%random:~-1,1%"
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0b "%random:~-1,1%"
goto 1
My bad, I had accidentally made a mistake. try this instead.
@echo off
mode 200
setlocal
call :Echo.Color.Init
goto main
:Echo.Color %1=Color %2=Str [%3=/n]
setlocal enableDelayedExpansion
set "str=%~2"
:Echo.Color.2
:# Replace path separators in the string, so that the final path still refers to the current path.
set "str=a%ECHO.DEL%!str:\=a%ECHO.DEL%\..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:/=a%ECHO.DEL%/..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:"=\"!"
:# Go to the script directory and search for the trailing -
pushd "%ECHO.DIR%"
findstr /p /r /a:%~1 "^^-" "!str!\..\!ECHO.FILE!" nul
popd
:# Remove the name of this script from the output. (Dependant on its length.)
for /l %%n in (1,1,12) do if not "!ECHO.FILE:~%%n!"=="" <nul set /p "=%ECHO.DEL%"
:# Remove the other unwanted characters "\..\: -"
<nul set /p "=%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%"
:# Append the optional CRLF
if not "%~3"=="" echo.
endlocal & goto :eof
:Echo.Color.Var %1=Color %2=StrVar [%3=/n]
if not defined %~2 goto :eof
setlocal enableDelayedExpansion
set "str=!%~2!"
goto :Echo.Color.2
:Echo.Color.Init
set "ECHO.COLOR=call :Echo.Color"
set "ECHO.DIR=%~dp0"
set "ECHO.FILE=%~nx0"
set "ECHO.FULL=%ECHO.DIR%%ECHO.FILE%"
:# Use prompt to store a backspace into a variable. (Actually backspace+space+backspace)
for /F "tokens=1 delims=#" %%a in ('"prompt #$H# & echo on & for %%b in (1) do rem"') do set "ECHO.DEL=%%a"
goto :eof
:1
:main
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0b "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0b "%random:~-1,1%"
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0B "%random:~-1,1%"
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0d "%random:~-1,1%"
call :Echo.Color 0c "%random:~-1,1%"
call :Echo.Color 0e "%random:~-1,1%"
call :Echo.Color 0a "%random:~-1,1%"
call :Echo.Color 09 "%random:~-1,1%"
call :Echo.Color 0b "%random:~-1,1%"
goto 1
exit /b
:# The following line must be last and not end by a CRLF.
-