每行的批量颜色
回答
你可以不用任何外部程序。这是几天前我来的。工作非常好。
@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"
goto :eof
:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
Credits to jeb His post can be found here
下面的批处理文件创建COLORMSG.COM文件(如你所愿将其重命名),显示色彩的消息是这样的:colormsg color "Message"
。
@echo off
(
echo e100
echo 0F B6 0E 80 00 E3 4F BF 81 00 B0 20 FC F3 AE 74
echo e110
echo 45 E3 43 8A 45 FF E8 43 00 80 3D 20 74 0E C0 E0
echo e120
echo 04 8A E0 8A 05 E8 34 00 0A C4 47 49 E3 28 32 E4
echo e130
echo 50 B0 22 F2 AE 75 1F E3 1D 8B F7 8B D1 F2 AE 75
echo e140
echo 01 41 2B D1 74 10 8B CA 5B B0 20 B4 09 CD 10 AC
echo e150
echo B4 0E CD 10 E2 F9 32 C0 B4 4C CD 21 3C 61 72 02
echo e160
echo 2C 20 3C 41 72 02 2C 07 2C 30 C3
echo rcx
echo 6b
echo w
echo q
) | debug colormsg.com > nul
在消息光标未移动到新行之后,因此几条消息可能显示在同一行中。为了让颜色更简单的方法,你可以使用这些定义:
set Black=0& set Gray=8
set Blue=1& set LightBlue=9
set Green=2& set LightGreen=A
set Aqua=3& set LightAqua=B
set Red=4& set LightRed=C
set Purple=5& set LightPurple=D
set Yellow=6& set LightYellow=E
set White=7& set BrightWhite=F
例如:
colormsg %Yellow% "Message in yellow "
colormsg %Blue%%BrightWhite% "Bright white text over blue background"
这是一个更大的示例:
@echo off
setlocal EnableDelayedExpansion
set i=0
for %%c in (Blk Blu Grn Aqu Red Pur Yel Whi) do (
set color[!i!]=%%c
set /A i+=1
)
for /L %%j in (0,1,7) do (
set color[!i!]=L!color[%%j]:~0,-1!
set /A i+=1
)
cls
echo/
echo BACKGROUND/FOREGROUND COMBINATIONS OF AVAILABLE SCREEN COLORS
echo/
echo/
colormsg 7 "ForeGrnd:"
for /L %%i in (0,1,15) do colormsg 7 " !color[%%i]!"
echo/
echo BackGrnd
set i=0
for /L %%b in (0,1,9) do call :ShowLine %%b
for %%b in (A B C D E F) do call :ShowLine %%b
echo/
goto :eof
:ShowLine
colormsg 7 " !color[%i%]! "
set /A i+=1
for /L %%f in (0,1,9) do colormsg %1%%f " %1%%f "
for %%f in (A B C D E F) do colormsg %1%%f " %1%%f "
echo/
嘿加雷,这里是一个给你奖励!下面的批处理文件创建TEXTPOS.COM文件(如你所愿重新命名它)是将光标移动到任意行和列这样:textpos line col
:
@echo off
(
echo e100
echo 0F B6 0E 80 00 E3 2D BF 81 00 B0 20 FC F3 AE 74
echo e110
echo 23 E3 21 8D 75 FF E8 45 00 3C 20 75 3B 86 F2 E8
echo e120
echo 3C 00 86 F2 3C 20 74 04 3C 0D 75 2C 32 FF B4 02
echo e130
echo CD 10 EB 24 32 FF B4 03 CD 10 8A C6 8A CA E8 38
echo e140
echo 00 B2 20 B4 02 CD 21 8A C1 E8 2D 00 B2 0D B4 02
echo e150
echo CD 21 B2 0A B4 02 CD 21 32 C0 B4 4C CD 21 32 E4
echo e160
echo AC 3C 20 74 FB 3C 30 72 0D 3C 39 77 09 2C 30 D5
echo e170
echo 0A 8A E0 AC EB EF 8A F4 C3 D4 0A 05 30 30 8B D0
echo e180
echo 80 FC 30 74 08 86 D6 B4 02 CD 21 8A D6 B4 02 CD
echo e190
echo 21 C3
echo rcx
echo 92
echo w
echo q
) | debug textpos.com > nul
例如:
textpos 0 0
colormsg %Red% "Red message at top left corner of the screen"
textpos 10 40
colormsg %Blue%%LightYellow% "This message start in line 10 column 40"
编辑
我稍微修改了TEXTPOS程序,它显示当前光标位置,如果它没有参数执行;此功能允许以这种方式将光标位置存储在一个变量中:textpos > pipe.txt & set /P pos=< pipe.txt
(因为textpos | set /P pos=
有错误并且不起作用)。
如果显示的颜色信息的背景和前景颜色的值相同,则文本在屏幕中不可见;此功能允许输入密码。例如,这是getpassword.bat
文件:
@echo off
set password=
for /L %%i in (1,1,%1) do set password=!password!x
colormsg 7 "Enter password: "
textpos > pipe.txt & set /P passpos=< pipe.txt
colormsg 77 "%password%"
textpos %passpos%
set password=
for /L %%i in (1,1,%1) do (
getakey
set password=!password!!errorlevel!
colormsg 7F "*"
)
先前批文件允许读取与在参数给出的字符数密码,例如:call getpassword 8
;输入的字符被其ASCII码改变,所以密码具有基本的加密。例如,要检查输入的密码是否为“通过”:
call getpassword 4
if %password% == 8097115115 goto right_password
我提供了GETAKEY。前一个问题COM程序,但在这里再次是:
@echo off
(
echo e100
echo B4 08 CD 21 B4 4C CD 21
echo rcx
echo 8
echo w
echo q
) | debug getakey.com > nul
如果下选举人可能会解释投票的原因...**':(**请注意,这个解决方案发布于2011年10月,当时没有64位版本的Windows,并且这种方法在所有计算机上都正常工作! – Aacini
你可以试试这个 只是命令的一点点:
@echo off
chcp 437>nul&&graftabl 936>nul
ren %WinDir%\System32\config.nt config.nt.bak 2>nul
<"%~f0" more +6 >%WinDir%\System32\config.nt
command /cecho [1;31mHel[32mlo [33mHow[35mare[36myou[m
pause>nul&exit
DOSONLY
dos=high, umb
device=%SystemRoot%\system32\himem.sys
DEVICE==%SystemRoot%\System32\ANSI.SYS /x
files=40
@echo off
REM You can do it easely by typing this at the bottom of your file.
:[any color]
powershell -Command Write-Host "%*" -foreground "[any color]" -background "[any color]"
:[any color]
powershell -Command Write-Host "%*" -foreground "[any color]" -background "[any color]"
REM for typing text in different colors you just need to write this
call :[any color] "[any message]"
call :[any color] "[any other message]"
pause
REM if you want to know more, send a mail to maupie42 at gmail dot com
exit
这个答案有什么错误?它至少作品 - 我对它为什么被低估感兴趣 - 这里有什么缺点? –
是的,这是可能的cmdcolor :
echo \033[94mHello
echo \033[92mHow are you
将此代码保存为.bat
(它是自编的.net混合型):
@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
set "jsc=%%v"
)
if not exist "%~n0.exe" (
"%jsc%" /nologo /out:"%~n0.exe" "%~dpsfnx0"
)
%~n0.exe %*
endlocal & exit /b %errorlevel%
*/
import System;
var arguments:String[] = Environment.GetCommandLineArgs();
var newLine = false;
var output = "";
var foregroundColor = Console.ForegroundColor;
var backgroundColor = Console.BackgroundColor;
var evaluate = false;
var currentBackground=Console.BackgroundColor;
var currentForeground=Console.ForegroundColor;
//http://stackoverflow.com/a/24294348/388389
var jsEscapes = {
'n': '\n',
'r': '\r',
't': '\t',
'f': '\f',
'v': '\v',
'b': '\b'
};
function decodeJsEscape(_, hex0, hex1, octal, other) {
var hex = hex0 || hex1;
if (hex) { return String.fromCharCode(parseInt(hex, 16)); }
if (octal) { return String.fromCharCode(parseInt(octal, 8)); }
return jsEscapes[other] || other;
}
function decodeJsString(s) {
return s.replace(
// Matches an escape sequence with UTF-16 in group 1, single byte hex in group 2,
// octal in group 3, and arbitrary other single-character escapes in group 4.
/\\(?:u([0-9A-Fa-f]{4})|x([0-9A-Fa-f]{2})|([0-3][0-7]{0,2}|[4-7][0-7]?)|(.))/g,
decodeJsEscape);
}
function printHelp() {
print(arguments[0] + " -s string [-f foreground] [-b background] [-n] [-e]");
print(" ");
print(" string String to be printed");
print(" foreground Foreground color - a ");
print(" number between 0 and 15.");
print(" background Background color - a ");
print(" number between 0 and 15.");
print(" -n Indicates if a new line should");
print(" be written at the end of the ");
print(" string(by default - no).");
print(" -e Evaluates special character ");
print(" sequences like \\n\\b\\r and etc ");
print("");
print("Colors :");
for (var c = 0 ; c < 16 ; c++) {
Console.BackgroundColor = c;
Console.Write(" ");
Console.BackgroundColor=currentBackground;
Console.Write("-"+c);
Console.WriteLine("");
}
Console.BackgroundColor=currentBackground;
}
function errorChecker(e:Error) {
if (e.message == "Input string was not in a correct format.") {
print("the color parameters should be numbers between 0 and 15");
Environment.Exit(1);
} else if (e.message == "Index was outside the bounds of the array.") {
print("invalid arguments");
Environment.Exit(2);
} else {
print ("Error Message: " + e.message);
print ("Error Code: " + (e.number & 0xFFFF));
print ("Error Name: " + e.name);
Environment.Exit(666);
}
}
function numberChecker(i:Int32){
if(i > 15 || i < 0) {
print("the color parameters should be numbers between 0 and 15");
Environment.Exit(1);
}
}
if (arguments.length == 1 || arguments[1].toLowerCase() == "-help" || arguments[1].toLowerCase() == "-help" ) {
printHelp();
Environment.Exit(0);
}
for (var arg = 1; arg <= arguments.length-1; arg++) {
if (arguments[arg].toLowerCase() == "-n") {
newLine=true;
}
if (arguments[arg].toLowerCase() == "-e") {
evaluate=true;
}
if (arguments[arg].toLowerCase() == "-s") {
output=arguments[arg+1];
}
if (arguments[arg].toLowerCase() == "-b") {
try {
backgroundColor=Int32.Parse(arguments[arg+1]);
} catch(e) {
errorChecker(e);
}
}
if (arguments[arg].toLowerCase() == "-f") {
try {
foregroundColor=Int32.Parse(arguments[arg+1]);
} catch(e) {
errorChecker(e);
}
}
}
Console.BackgroundColor = backgroundColor ;
Console.ForegroundColor = foregroundColor ;
if (evaluate) {
output=decodeJsString(output);
}
if (newLine) {
Console.WriteLine(output);
} else {
Console.Write(output);
}
Console.BackgroundColor = currentBackground;
Console.ForegroundColor = currentForeground;
保存为colormsg.bat
@echo off
if "%~3" == "" goto usage
powershell -command write-host -foreground "%~1" -background "%~2" -nonewline "%~3"
exit /b
:usage
echo.
echo Usage: call colormsg foreground background "message"
echo.
echo Examples:
echo call colormsg white blue "example1"
echo call colormsg 4 2 "example2"
例子:
@echo off
for /f %%a in ('"prompt $H & for %%a in (-) do rem"') do set "BS=%%a"
call colormsg blue 0 "Hello"
<nul set /p "=.%BS% "
call colormsg green 0 "How are you?"
echo.
pause
只需要COLORMSG的:
@echo off
(
echo e100
echo 0F B6 0E 80 00 E3 4F BF 81 00 B0 20 FC F3 AE 74
echo e110
echo 45 E3 43 8A 45 FF E8 43 00 80 3D 20 74 0E C0 E0
echo e120
echo 04 8A E0 8A 05 E8 34 00 0A C4 47 49 E3 28 32 E4
echo e130
echo 50 B0 22 F2 AE 75 1F E3 1D 8B F7 8B D1 F2 AE 75
echo e140
echo 01 41 2B D1 74 10 8B CA 5B B0 20 B4 09 CD 10 AC
echo e150
echo B4 0E CD 10 E2 F9 32 C0 B4 4C CD 21 3C 61 72 02
echo e160
echo 2C 20 3C 41 72 02 2C 07 2C 30 C3
echo rcx
echo 6b
echo w
echo q
) | debug colormsg.com > nul
ren colormsg.com colormsg.exe
使用的颜色CMD默认:
color /?
使用echo.
打破行
使用空格键来移动味精水平
例子:
@echo off
REM one color in line
echo.
colormsg a "green color"
REM break line
echo.
REM two colors in line
colormsg b "color blue"
colormsg c "color red"
REM break line
echo.
REM two colors with spacing horizontally (no use tab)
colormsg d "purple color"
colormsg e " yellow color"
echo.
echo.
pause
这一切!
你可以试试这个简单的脚本。它不使用临时文件。只要确保在“%path%”环境变量中列出的任何文件夹中都有“debug.exe”可执行文件。
@echo off
rem Script written by BrendanSilva [bl8086]
rem You need DEBUG.EXE executable in your system.
setlocal enabledelayedexpansion
set /a _er=0
set /a _n=0
set _ln=%~4
goto init
:howuse ------------------------------------------------------------------------
echo.
echo ECOL.BAT - v2.0
echo Print colored text as batch script without temporary files.
echo Written by bl8086
echo.
echo Syntax:
echo ECOL.BAT [COLOR] [X] [Y] "Insert your text here"
echo COLOR value must be a hexadecimal number like "color /?" information
echo.
echo Example:
echo ECOL.BAT F0 20 30 "640K ought to be enough for anybody."
echo.
goto :eof
:error ------------------------------------------------------------------------
set /a "_er=_er | (%~1)"
goto :eof
:gcnvhx ------------------------------------------------------------------------
set _cvhx=
set /a _cvint=%~1
:cnvhx
set /a "_gch = _cvint & 0xF"
set _cvhx=!nsys:~%_gch%,1!%_cvhx%
set /a "_cvint = _cvint >> 4"
if !_cvint! neq 0 goto cnvhx
goto :eof
:init --------------------------------------------------------------------------
if "%~4"=="" call :error 0xff
(
set /a _cl=0x%1
call :error !errorlevel!
set _cl=%1
call :error "0x!_cl! ^>^> 8"
set /a _px=%2
call :error !errorlevel!
set /a _py=%3
call :error !errorlevel!
) 2>nul 1>&2
if !_er! neq 0 (
echo.
echo ERROR: value exception "!_er!" occurred. Check memory out.
echo.
goto howuse
)
set nsys=ABCDEF
set /a cnb=0
set /a cnl=0
set _cvhx=0
set _cvint=0
set _cvmhx=0
:parse -------------------------------------------------------------------------
set _ch=!_ln:~%_n%,1!
if "%_ch%"=="" goto perform
set /a "cnb += 1"
if %cnb% gtr 7 (
set /a cnb=0
set /a "cnl += 1"
)
set bln%cnl%=!bln%cnl%! "!_ch!" %_cl%
set /a "_n += 1"
goto parse
:perform -----------------------------------------------------------------------
set /a "in = ((_py * 0xA0) + (_px << 1)) & 0xFFFF"
call :gcnvhx %in%
set ntr=!_cvhx!
set /a jmp=0xe
set bl8086str=echo.h 0 0
@for /l %%x in (0,1,%cnl%) do (
set bl8086str=!bl8086str!^&echo.eb800:!ntr! !bln%%x!
set /a "in=!jmp! + 0x!ntr!"
call :gcnvhx !in!
set ntr=!_cvhx!
set /a jmp=0x10
)
(
echo %bl8086str%
echo.q
) |debug >nul 2>&1
此脚本可以在任何屏幕位置编写您的文本。也使用任何颜色。
- 1. 每行PHP随机颜色
- 2. 批量颜色选择错误
- 3. asp中每行的单独颜色:TextBox
- 4. 有不同的颜色为每行
- 5. 在批处理文件中更改每个单词的颜色
- 6. 在每一行显示特定颜色
- 7. 颜色格式每隔一行
- 8. SSRS:以不同颜色显示每行的报表,并以不同的颜色对每列进行排序
- 9. 需要多种颜色的批量聊天帮助
- 10. 批量创建线条中间的颜色?
- 11. 我如何使终端中$ bit的颜色每行改变颜色?
- 12. 更改批处理文件中的ping结果行的颜色
- 13. 更改CSS颜色每秒
- 14. 颜色常量2007
- 15. OpenGL常量颜色
- 16. Gblame:颜色每次提交不同的颜色
- 17. 颜色TdCalendarView行
- 18. UIPickerView行颜色
- 19. 设置不同的颜色为每个行多行TextBox
- 20. 对颜色/颜色值进行排序
- 21. 指定颜色和测量颜色之间的差异,matplotlib颜色映射
- 22. MYSQL计算每种商品的颜色数量
- 23. 更改.gif图像中每个像素的颜色数量?
- 24. 从精灵一批获得色调颜色,HLSL着色
- 25. 颜色选择器,每个颜色选择发送事件
- 26. Devexpress列标题颜色(每列不同颜色),winform c#
- 27. D3颜色类别和颜色相似每个子类别
- 28. Java如何为每种颜色提供两种颜色值?
- 29. ValueError(“颜色kwarg必须每个数据集有一种颜色”)?
- 30. 用三种颜色每30秒更改视图颜色
重复这个(标题不清)问题:[我怎么能做一个多功能的批处理程序?](http://stackoverflow.com/questions/7290434/how-can-i-make-a-multi-功能批处理程序/ 7302678#7302678) –
@手工食品谢谢。我明白你的称号不好,但是有没有办法做到这一点,而不必设置它?我问,因为我做了一个批处理游戏,这将是一个很好的功能,所以我希望能够将它给予某人而不必更改任何计算机设置 –
您不需要更改计算机设置。只需将此批处理文件包含在与您的游戏相同的文件夹中。另一个问题的海报要求这是系统范围的,所以我将其添加到答案中。所有你需要的是脚本标题** CEcho.bat ** –