У меня есть пакетный скрипт, который может отображать два или более цветов текста в одной строке в командной строке. (Ниже)
@echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a"
)
echo say the name of the colors, don't read
call :ColorText 0a "blue"
call :ColorText 0C "green"
call :ColorText 0b "red"
echo(
call :ColorText 19 "yellow"
call :ColorText 2F "black"
call :ColorText 4e "white"
pause
goto :eof
:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
однако этот текст необходимо ввести в сценарий заранее, отредактировав пакетный файл с помощью блокнота. Я хотел бы иметь возможность просто открыть командную строку и ввести что-то вроде:
cecho /blue hello world!
или
cecho blue "hello world!"
или что-то простое, где я могу предоставить цвет (желательно в виде строки, а не цветовой код) и текст (с кавычками или без).
Я не знаю, бесполезно ли это для вас, но эту часть скрипта можно сохранить:
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
(от ": ColorText" до конца скрипта)
и сохраните его как «ColorText.bat» в «C: \ windows \ system32». Затем в другой половине сценария везде, где вы видите:
call :ColorText
Измените его на:
call ColorText
(опустить двоеточия)
И сохраните этот скрипт как colors.bat в "C: \ windows \ system32". Затем откройте командную строку и введите «цвета». Вот как я хочу, чтобы это функционировало; никаких дополнительных команд, скриптов установки, путей к файлам; просто простая функция из одного или двух слов со всем этим грязным кодом, происходящим в фоновом режиме (вне поля зрения). Однако приведенная выше идея по-прежнему не позволяет мне указать свой собственный текст или цвет из командной строки .... какие-либо идеи?