Wie mache ich eine bestimmte Zeile einer batch-Datei eine andere Farbe als die anderen?
Ich arbeite an einem Programm, das generiert die Tag das Wetter für D&D Spiele. Ich möchte das Programm zum anzeigen einer Warnung in Roter Schrift, wenn ein Sturm erzeugt, so dass die DM ist bewusst, dass das Wetter ist nicht typisch. Reduzieren Sie die Anzahl der Tastenanschläge, es muss dazu auf dem gleichen Bildschirm wie der text, Detaillierung der Wetter selbst.
Derzeit für ein Sturm den Eintrag habe ich dieses:
: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
Den Typ-Befehle aufrufen-text-Dokumente enthalten eine Kopfzeile und eine Fußzeile für jeden Eintrag, um zu helfen, das Programm Professionell Aussehen und bieten einen Rahmen, um mit Hilfe von word-wrap. Dein können nicht entfernt werden. Nicht vorschlagen, etwas, das würde mir nicht die Befehle eingeben, wie Sie derzeit existieren, bitte. Bitte haben Sie Verständnis, dass dieser rote text-Zeile Hinzugefügt werden, um eine Menge von verschiedenen teilen des Programms, jedes mal gibt es ein Sturm für jeden und jedes BIOMS im generator. Ich würde es vorziehen, es nicht zu sein, mehr als nur 2 oder 3 Zeilen code (Aber wenn es nur einen Weg, um es gut zu machen...)
Kann ich die eine Zeile in rot und der rest in grün? Oder soll ich das Programm auf den Signalton, um auf die Tatsache aufmerksam machen? Sie haben eine bessere und einfachere Idee? Wie mache ich das?
- möglich, Duplikat der stackoverflow.com/questions/2586012/...
- Nein. Das ist für mehr als eine Farbe in der gleichen Zeile. Ich brauche eine Linie auf dem Bildschirm in einer Farbe, und die anderen eine andere Farbe. Die Antwort Dosis nicht erklären, wie die Umsetzung der code sehr gut äther. Ist all das legte jedes mal, wenn Sie müssen, verwenden Sie mehr als eine Farbe? Ist es gesetzt, einmal zu Beginn verwenden Sie dann den Befehl Wörter? Nicht nur erklärt gut genug für mich.
- Es kann nicht getan werden, mit einfachen standard-batch-Befehle. Einer der beteiligten Skript drucken kann die Farbe in einer einzigen Zeile, oder eine Dritte Partei Werkzeug kann es tun. Microsoft color Befehle ändern nur den gesamten Bildschirm.
- Ich bin die Programmierung dieses etwas werde ich versuchen zu verkaufen. Es muss auf jedem PC. Könnten Sie einen link zu einer tutorial zu machen, so ein script?
- Ähmm, nur weil eine Lösung, die es erlaubt, mehrere Farben in einer Zeile, bedeutet nicht, müssen Sie mehrere Farben. Die verlinkte Lösung auch erläutert, wie
ECHO(
beenden Sie die Zeile in der Vorbereitung für die nächste. - Eine andere Frage mit Antworten, die im Grunde das gleiche: stackoverflow.com/q/4339649/1012053
- Ah Ihr in das code-segment selbst. Das ist ein bisschen verwirrend. Dank dude.
- Ändern
threw
zuthrough
unddurration
zuduration
. - Anscheinend sind Sie das überschreiben der system-Variablen
temp
ohne auch realsing es. Stellen Sie sicher, dass Sie mitsetlocal
am Anfang Ihres Skripts oder noch besser, verwenden Sie einen anderen Variablennamen. - Möglich, Duplikat der Wie haben Sie mehrere Farben in einem Windows-batch-Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem gestern auch, habe ich einige der Forschung und diese für mich gearbeitet.
EDIT: Das ist NICHT den gleichen code wie die anderen.
tut es das auch:
Alles, was Sie tun müssen, um zu passen, dieser wird gesetzt der Teil von
SETLOCAL EnableDel
... zu)
an den Anfang des Codes (Wenn der code beginnt mit @echo off dann legen Sie es unter die) und auch der Teil aus:colorEcho
zudel %~2
auf die genaue Unterseite Ihres Skripts (NICHTS DRUNTER!)Nun zwischen Ihnen bemerken
Erklärte, Zeile für Zeile:
Erste Zeile (
call :colorEcho 0a "This is colored green with a black background!"
): Dies ist eincolored
echo, ist es erstaunlich, sagtThis is colored green with a black background!
im0a
(Black Bg, Grüner Text)Zweite Zeile (
echo.
) druckt einen Zeilenvorschub, da unsere farbigen echo nicht gedruckt werden.SO
Lassen Sie uns sagen, Sie wollte sagen: "Hallo Welt" in
Hello
wird gelb undWorld
grün.Beispiel!
Dies ist, was es tut:
Ich hoffe, das ist verständlich!
BEARBEITEN: Stellen Sie sicher, dass das Programm
exit
s, bevor Sie es erreichen konnte:colorEcho
exit /b
call :colorEcho 0e "anthing I can help with"
Aber nicht:call :colorEcho 0e "anthing else I can help with?"
colorEcho
mit einem Ausrufezeichen, aber diese Marke wird nicht ausgegeben (und zwei andere Punkte: funktioniert nicht mit einzelnen Punkt.
oder wenn Dateien bereits existieren, die Ergebnisse sind katastrophal, aber das ist einfach zu umgehen).:
,/
,\
lassen, dass dein string Aussehen wie ein Pfad (auch reffers zu.
und..
) und vermeiden Sie auch wildcards wie*
. Beachten Sie, dass Sie nicht verwenden können nachfolgende Leerzeichen. Happy painting 😉Skript hier:
Wie haben Sie mehrere Farben in einem Windows-batch-Datei?
ein wenig modifizierte (vereinfachte):
War es ein link in der ersten Antwort "mögliche Duplikate: So ändern Sie die Farbe für den text der Bemerkungen-Zeile in eine batch-Datei
"
for
Befehl) erzeugt eine variable, müssen Sie dies nur einmal tun. Der code beginnend mit:ColorText
und endend mitgoto :eof
ist ein "Unterprogramm". Sie brauchen das nur einmal. Sie könnencall
es, wo und so oft Sie es brauchen.call :ColorText 0c "red Text"
oder `call :ColorText 0a "grüner text"' ich bearbeitet habe, meine Antwort zu Ihnen zeigen.:eof
, das ist ein built-in label-das bedeutet, dass die Datei zu Ende, und das ist vielleicht der wichtigste Teil von eine Unterroutine. Ändern Sie die Einstellung nicht.Können Sie versuchen, dieses Skript. Zum drucken verwenden Sie beliebigen text mit einer beliebigen Farbe in einer beliebigen position auf dem Bildschirm. Es bedeutet nicht, temporäre Dateien verwenden, sondern müssen auf Ihrem system debug.exe ausführbare (Windows native):