Die Stapeldatei ändert die Farbe eines bestimmten Textabschnitts

2

Wie kann ich die Farbe eines bestimmten Textabschnitts in einer .bat-Datei ändern? Ich habe momentan folgendes:

@echo off
:a
color 2
set /p command=$jp 
goto :%command%

was ein grünes "$ jp" erzeugt. Der Text, den ich danach eingebe, ist grün, ich möchte nur, dass das "$ jp" grün ist und das, was ich eingebe, weiß, z.color F

Makerimages
quelle
Diese Frage wurde auf StackOverflow gestellt und beantwortet: Wie werden mehrere Farben in einer Stapeldatei gespeichert? . Es gibt kein eingebautes Kommando, um dies zu tun
dbenham
Wenn Sie mehr wollen, als Batch-Dateien können, versuchen Sie es mit PowerShell.
Julian Knight

Antworten:

3

Wie in dbenhams Kommentar erwähnt, wird in StackOverflows erläutert, wie mehrere Farben in einer Batch-Datei enthalten sein sollen.

Bei der Beantwortung dieser Frage geht es um Windows 7. Für die Antworten ist entweder zusätzliche Software erforderlich oder es werden einige Batch-Dateitechniken verwendet, die etwas komplex aussehen.

Für diese Frage ist jedoch kein Betriebssystem markiert, und ich möchte neue Informationen hinzufügen, die für ein neueres Betriebssystem relevant sind. Windows 10 unterstützt jetzt auch ANSI-Escape-Sequenzen.

Das Schöne an ANSI-Escape-Sequenzen ist, dass ihre Verwendung konzeptionell einfach ist. Sie müssen nur ANSI-Farb-Escape-Sequenzen verwenden (wie die auf Rob van der Woudes Seite zu ANSI Color dokumentierten ) und diese in eine ECHO-Anweisung aufnehmen.

Leider wird die Verwendung dieser Sequenzen aufgrund der Behandlung des 27. ASCII-Zeichens etwas schwieriger.

Der Trick bei der Verwendung von ANSI-Escape-Sequenzen besteht nun darin, das 27. ASCII-Zeichen an den Bildschirm zu senden. Dies ist schwierig, weil die Taste die Taste ist, die am häufigsten mit ASCII 27 zusammenhängt Esc. (Dies ist einer der Hauptgründe, warum diese ANSI-Escape-Sequenzen oft als "Escape" -Sequenzen bezeichnet werden.) Viele Softwareprogramme unterstützen den EscSchlüssel in besonderer Weise. Diese spezielle Unterstützung behindert häufig das einfache Senden eines einfachen ASCII-Zeichens mit der Nummer 27.

Häufig wurde dies umgangen, indem das 27. Zeichen in einer Datei gespeichert und das Zeichen nach Bedarf kopiert und eingefügt wurde. Wenn Sie dann eine Datei mit vielen ANSI-Sequenzen erstellen, müssen Sie das 27. ASCII-Zeichen einige Male verwenden, was möglicherweise durch Kopieren und Einfügen möglich ist.

Es gibt jedoch einen besseren Ansatz. Holen Sie sich das ASCII-Zeichen nur einmal in eine Datei und holen Sie es in eine Umgebungsvariable. Dies funktioniert gut in Windows 10 (und, was ich gelesen habe, UNIX-Terminals). Dann können Sie einfach auf diese Umgebungsvariable verweisen.

Ich habe es geschafft, mit ssed eine Batch-Datei zu erstellen . Die unten erwähnte Batch-Datei legt einfach eine Variable mit dem Namen ASCII 27 fest, die dieses Zeichen enthält.

Darüber hinaus können Sie Umgebungsvariablen erstellen. Also, anstelle von etwas wie:

echo %ASCII27%[31m Lava %ASCII27%[37m Cyan/Aqua/Teal text %ASCII27%[33m Sun
echo %ASCII27%[34m Water %ASCII27%[37m Sky %ASCII27%[33m Sun

Sie können verwenden:

SET ANSIREDFG=%ASCII27%[31m
SET ANSICYANFG=%ASCII27%[37m
SET ANSIYELLOWFG=%ASCII27%[33m
SET ANSIBLUEFG=%ASCII27%[34m
echo %ANSIREDFG% Lava %ANSICYANFG% Cyan/Aqua/Teal text %ANSIYELLOWFG% Sun
echo %ANSIBLUEFG% Water %ANSICYANFG% Sky %ANSIYELLOWFG% Sun

Das sieht vielleicht nicht viel kürzer aus. Der Vorteil hier ist nicht unbedingt, dass die Datei hübscher wird. Sie können jedoch freundlichere Namen (für die Sie sich entscheiden) verwenden %ANSIBLUEFG%, um BLAU als Vordergrundfarbe zu verwenden, anstatt sich zu merken, welche Farbe mit welcher Zahl zusammenhängt. Das kann viel schneller sein, wenn Sie die Farbnummern nicht auswendig lernen und debuggen.

Ich habe eine ZIP-Datei erstellt, die Folgendes enthält:

  • OUT.ANS: Eine ANSI-Beispieldatei, die dies demonstriert und mehrere Farblayouts pro Zeile enthält
  • ANSICOL.BAT: Eine Batch-Datei, die zum Erstellen dieser ANSI-Datei verwendet wurde und die die Verwendung von Variablennamen anstelle häufiger numerischer Verweise auf die Farbnummern demonstriert.
  • ASCII27.BAT: Erstellt die ASCII27-Variable mit der Escape-Sequenz

Diese ZIP-Datei befindet sich in der ANSI-Demo von Windows 10, Version 1 . Die Batch-Datei wurde so erstellt, dass sie mit Windows 10 gut funktioniert. Aufgrund der Verwendung von " %^%" funktioniert dies unter manchen älteren Betriebssystemen möglicherweise nicht ganz so gut (würde aber wahrscheinlich wie erwartet funktionieren, wenn "% ^%" durch "%%" ersetzt wird.) .

Wenn Sie keine Lust haben, mit Umgebungsvariablen herumzuspielen, können Sie versuchen, die Codes direkt aus der Datei out.ans zu kopieren und einzufügen (was wunderbar funktioniert, wenn Ihr Texteditor das ASCII-27-Zeichen nicht beschädigt).

TOOGAM
quelle
Es gibt keine <BR>nach den Befehlen.
Black Thunder
@ BlackThunder: Stimmt. Ein anderer Benutzer hat meine Antwort bearbeitet und einige sinnlose Änderungen vorgenommen, von denen einige dazu führten, dass die <BR>Tags zu sichtbarem Text wurden (anstatt nur in die nächste Zeile zu wechseln), was dazu führte, dass die Informationen technisch inkorrekt wurden (da sie mit dieser Version nicht funktionieren). Vielen Dank, dass Sie auf das Problem hingewiesen haben. Ich wusste nicht, dass das mit meiner Antwort geschehen war. Und ich habe keine Option, diese Bearbeitung zurückzusetzen.
TOOGAM
0

Versuchen Sie dieses Skript. Dies ist eine gute Option für 32-Bit-Systeme. Sie können jeden Text mit jeder Farbe in jeder Bildschirmposition drucken:

http://pastebin.com/bzYhfLGc

Lukka86
quelle
1
Willkommen bei Super User. Externe Links können beschädigt oder nicht verfügbar sein. In diesem Fall wäre Ihre Antwort nicht hilfreich. Bitte geben Sie die wesentlichen Informationen in Ihrer Antwort an. Vielen Dank.
Fixer1234