我正在制作一个节目,为D&D游戏创造一天的天气.我希望程序在生成风暴时以红色文本显示警告,以便DM知道这种天气不典型.要减少击键次数,必须在与详细说明天气本身的文本相同的屏幕上执行此操作.
目前,对于暴风雨的进入,我有这样的:
: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
Run Code Online (Sandbox Code Playgroud)
类型命令调用文本文档,其中包含每个条目的页眉和页脚,以帮助程序看起来很专业,并提供边框以协助自动换行.你不能被删除.请不要提出一些让我无法使用当前存在的类型命令的内容.请理解,每当发生器中的每个生物群系都出现风暴时,此红色文本行将添加到程序的许多不同部分.我希望它不仅仅是2或3行代码(但如果只有一种方法可以做得好......)
我可以让一行为红色,其余为绿色吗?或者我应该让程序发出嘟嘟声以引起注意这一事实?你有更好更简单的想法吗?我该怎么做呢?
Vis*_*gic 27
昨天我遇到了同样的问题,我做了一些研究,这对我有用.编辑:这是不相同的代码为另一种.
@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
Run Code Online (Sandbox Code Playgroud)
它这样做:

所有你需要做的,以适应这把部分从SETLOCAL EnableDel...到)你的代码的开头(如果你的代码@echo开始了,然后把它放在那),并也把部分:colorEcho以del %~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
Run Code Online (Sandbox Code Playgroud)
解释一行行:第一行(call :colorEcho 0a "This is colored green with a black background!"):这是一个colored回声,它令人惊讶说,This is colored green with a black background!在0a(黑色BG,绿色文本),第二行(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
Run Code Online (Sandbox Code Playgroud)
这就是它的作用:
我希望这是可以理解的!
编辑:确保程序exit可以达到之前:colorEcho
| 归档时间: |
|
| 查看次数: |
42655 次 |
| 最近记录: |