el archivo por lotes a continuación crear el archivo COLORMSG.COM (cambiarle el nombre como desee) que muestran un mensaje con el color de esta manera: 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
Después de que el mensaje que el cursor no se mueve a la nueva línea, por lo que varios mensajes pueden ser presentados en la misma línea. Para dar a los colores de una manera más fácil, es posible utilizar estas definiciones:
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
Por ejemplo:
colormsg %Yellow% "Message in yellow "
colormsg %Blue%%BrightWhite% "Bright white text over blue background"
Este es un ejemplo más extenso:
@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/
Hey Gareth, aquí es una ¡bonificación para ti! El siguiente archivo por lotes crear el archivo TEXTPOS.COM (cambiarle el nombre que desee) que mueven el cursor a cualquier línea y la columna de esta manera: 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
Por ejemplo:
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"
EDITAR
Modifiqué ligeramente el programa TEXTPOS para que muestre la posición actual del cursor si se ejecuta sin parámetros; esta característica permite almacenar la posición del cursor en una variable de esta manera: textpos > pipe.txt & set /P pos=< pipe.txt
(porque textpos | set /P pos=
tiene un error y no funciona).
Si se muestra un mensaje de color con el mismo valor para los colores de fondo y primer plano, el texto no estará visible en la pantalla; esta característica permite ingresar una contraseña. Por ejemplo, este es getpassword.bat
archivo:
@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 "*"
)
archivo por lotes anterior permite leer una contraseña con el número de caracteres que figuran en el parámetro, por ejemplo: call getpassword 8
; los caracteres ingresados se modifican por su código ASCII, por lo que la contraseña tiene un cifrado rudimentario. Por ejemplo, para verificar si la contraseña introducida fue "Pasar":
call getpassword 4
if %password% == 8097115115 goto right_password
He proporcionado el GETAKEY.programa COM en una pregunta anterior, pero aquí está de nuevo:
@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
Duplicado de esta pregunta (mal titulada): [¿cómo puedo hacer un programa por lotes multifuncional?] (Http://stackoverflow.com/questions/7290434/how-can-i-make-a-multi- functional-batch-program/7302678 # 7302678) –
@ Hand-E-Food Gracias. Veo lo que quiere decir con un título pobre. ¿Hay alguna forma de hacerlo sin tener que configurarlo? Pregunto porque estoy haciendo un juego por lotes si esta fuera una buena característica, y por eso quiero poder dársela a alguien sin tener que cambiar ninguna configuración de la computadora –
No es necesario que cambie la configuración de la computadora. Solo incluye este archivo por lotes en la misma carpeta que tu juego. El póster de la otra pregunta quería que fuera todo el sistema, así que lo agregué a la respuesta. Todo lo que necesita es el script titulado ** CEcho.bat ** –