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
Antworten:
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:
Sie können verwenden:
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:
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).
quelle
<BR>
nach den Befehlen.<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.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
quelle