gpt4 book ai didi

batch-file - 如何使批处理文件的某一特定行的颜色与其他行不同?

转载 作者:行者123 更新时间:2023-12-02 22:27:13 25 4
gpt4 key购买 nike

我正在开发一个为 D&D 游戏生成当天天气的程序。我希望程序在 Storm 产生时以红色文本显示警告,以便 DM 知道这种天气不典型。为了减少击键次数,它必须在与详细说明天气本身的文本相同的屏幕上执行此操作。

目前对于 Storm 的进入我有这个:

:des4a
cls
type c:\AutoDM\WeatherGen\data\forcast1.txt
color 0c
echo There is an Ashstorm!
color 0a
echo.
echo It is %temp% degrees and the sky is invisible threw the thick
echo billowing clouds of ash.
echo.
echo # Survival checks to light a fire are at +15.
echo # Small unprotected flames will be snuffed out.
echo # Non-firearm ranged attacks are at a -8 to hit.
echo # Preception checks take a -10 for every 10 feet of distance.
echo # Survival checks to get along in the wild are at +15.
echo # Stealth checks are at a +5.
echo.
echo SPECIAL!
echo.
set /a die=6
set /a inches=%random%%%die+1
echo # The ashstorm will deposit %inches% inches of ash durring its
echo durration.
echo # Tracking a target after an ashstorm is at a +15.
type c:\AutoDM\WeatherGen\data\forcast2.txt
echo.
echo.
pause
goto menu

类型命令调用文本文档,其中每个条目包含页眉和页脚,以帮助程序看起来专业,并提供边框以帮助自动换行。你的无法被删除。请不要提出一些会使我无法使用当前存在的类型命令的建议。请理解,每当生成器中的每个生物群落发生 Storm 时,此红色文本行将被添加到程序的许多不同部分。我希望它不要超过 2 或 3 行代码(但如果只有一种方法可以做得很好......)

我可以将一行显示为红色,其余行显示为绿色吗?或者我应该让程序发出蜂鸣声来提醒人们注意这一事实?您有更好、更简单的想法吗?我该怎么做?

最佳答案

我昨天遇到了同样的问题,我做了一些研究,对我有用。编辑:这与另一个代码相同。

@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"
)
call :colorEcho 0a "This is colored green with a black background!"
echo.
call :colorEcho a0 "This is colored black with a green background!"
echo.
pause
exit
:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1i

它这样做: Output

要适应这一点,您所需要做的就是将从 SETLOCAL EnableDel... 到 ) 的部分放在代码的开头(如果您的代码以 @ 开头) echo off 然后把它放在它下面),并将从 :colorEchodel %~2 的部分放在脚本的确切底部(下面没有!)

现在你们注意到了

call :colorEcho 0a "This is colored green with a black background!"
echo.
call :colorEcho a0 "This is colored black with a green background!"
echo.
pause
exit

逐行解释:第一行(call :colorEcho 0a "This is colored green with a black background!"):这是一个彩色回声,令人惊讶的是This is colored green具有黑色背景! in 0a(黑色背景,绿色文本)第二行 (echo.) 打印换行符,因为我们的彩色回显不打印换行符。

所以

假设您想说“Hello World”,其中 Hello 为黄色,World 为绿色。示例!

@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"
)
call :colorEcho 0e "Hello "
call :colorEcho 0a " World"
pause
exit
:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1i

这就是它的作用: Output我希望这是可以理解的!

编辑:确保程序在到达 :colorEcho 之前退出

关于batch-file - 如何使批处理文件的某一特定行的颜色与其他行不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21660249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com