jhb-kaltduscher
Goto Top

Ich habe ein Problem mit Batch ANSI Formatierung

Hallo
Ich habe im Netz gelesen und gesucht.
Ich bekomme im Batch die ANSI-Formatierung @echo ^[1m <= Bold Fett nicht zum Laufen.
Was mache ich falsch?

@Setlocal EnableExtensions
@CHCP 1252
@ECHO OFF
@COLOR E0
**@ECHO ^[1m**
"""""  
@GOTO :EOF

Jetzt sollte der angezeigte Text in Bold Fett angezeigt werden.
##_bold

Ich bitte um die Korrektur im Batch-Code

Content-ID: 6230150064

Url: https://administrator.de/forum/ich-habe-ein-problem-mit-batch-ansi-formatierung-6230150064.html

Ausgedruckt am: 25.12.2024 um 07:12 Uhr

aqui
aqui 05.03.2023 aktualisiert um 17:19:57 Uhr
Goto Top
Einfach mal die Suchfunktion benutzen! face-wink
CMD Echo in Fett, Kursiv oder unterstrichen ausgeben
JHB-Kaltduscher
JHB-Kaltduscher 05.03.2023 um 18:58:44 Uhr
Goto Top
Hallo aqui

Alles gelesen, aber anscheinend nicht begriffen.
Deshalb habe ich im Bild darauf hingewiesen, das die Befehlssequenz @echo ^[1m
nicht zum beschriebenen Ergebnis führt.
Ich habe die vorgeschlagenen Routinen wie win10colors.cmd und winANSIcolors.cmd
erstellt und ausprobiert. Kein Ergebnis.
Was mache ich falsch?
Gruß Jürgen
TwistedAir
Lösung TwistedAir 05.03.2023 aktualisiert um 22:05:15 Uhr
Goto Top
Zitat von @JHB-Kaltduscher:

Ich habe die vorgeschlagenen Routinen wie win10colors.cmd und winANSIcolors.cmd
erstellt und ausprobiert. Kein Ergebnis.
Was mache ich falsch?

Die ESC-Sequenzen sind ja in erster Linie direkt für die Kommandozeile. Da kannst du sie ja im ersten Step mit ALT + 027 auf dem Nummernblock! (bei aktiviertem NUM Lock face-wink) mal ausprobieren:
esc-0
Ok, das "fett" sieht man nicht so gut, deshalb einmal mit Hintergrund [7m].

Wenn das soweit klappt, dann Step 2 für die Batch. Das Windows-eigene Notepad.exe ist nicht der geeignetste Editor für den Unterfangen - verwende lieber Notepad++. Dort wird die ESC-Sequenz auch als solche angezeigt. Hier der Vergleich, wenn du deine Zeilen in beiden Editoren öffnest:
esc-1

Gruß
TA

edit: Link für Notepad++ hinzugefügt
JHB-Kaltduscher
Lösung JHB-Kaltduscher 06.03.2023 um 22:30:31 Uhr
Goto Top
Hallo TwistedAir

Dein Vorschlag hat zum Erfolg geführt.
Das ESC-Zeichen aus Notepad++ ist das gültige .
Allerdings ist das Ergebnis nicht das Richtige.
Hier ein paar Test-Ergebnisse.

OHNE @echo  Bold Fettschrift
#admin0

MIT @echo  Bold Fettschrift
#admin1

Mit @echo ;34 Bold Fettschrift
#admin2

Mit @echo ;37 Bold Fettschrift
#admin3

Wie man sieht funktioniert die ANSI-Steuerung, das gewünschte Ergebnis Fettschrift
wird aber nicht angezeigt. Das Gegenteil ist der Fall, die Schrift wird grau.
Das Phänomen werde ich noch weiter untersuchen.

Vielen Dank für die Hilfe.

Gruß Jürgen Hans
aqui
aqui 07.03.2023 um 09:11:56 Uhr
Goto Top
JHB-Kaltduscher
JHB-Kaltduscher 07.03.2023 um 11:33:08 Uhr
Goto Top
Hallo aqui

Ausprobiert.
Leider ein ungültiges Ergebnis.
#trimm1

Ungültige Steuerung
#trimm2

Ich hoffe, dass wir vom gleichen Link reden.
Heise buntes Windows
6247018886
6247018886 07.03.2023 aktualisiert um 12:25:22 Uhr
Goto Top
Moin.
Wie man sieht funktioniert die ANSI-Steuerung, das gewünschte Ergebnis Fettschrift
wird aber nicht angezeigt.
Doch aber du musst schon eine Schriftart in der Konsole einstellen die FETT-Schrift überhaupt darstellt face-wink. Fettschrift ist sonst kaum ersichtlich, und in der Konsole eher subtil sichtbar.
Btw. machst du es mit den eckigen Klammern doppelt gemoppelt ...

screenshot

screenshot
Das Fett ist erkennbar ist aber eher "subtil und wird immer etwas heller dargestellt", richtig FETT wie in Word bekommst du das eben in der Konsole nicht.

Cheers briggs
JHB-Kaltduscher
JHB-Kaltduscher 07.03.2023 um 12:27:08 Uhr
Goto Top
Hallo Briggs

Wenn ich die Fettschrift in der Console einstelle,
brauche ich dieses nicht in der Routine einstellen.
Ich möchte die Steuerung automatisch per Batch vornehmen

Consolas Normal
#konsole-1
#konsole-2

Consolas Bold
#konsole-3
#konsole-4

Ich kann dem Anwender nicht sagen " Bitte Consolas Bold einstellen"

Gruß Jürgen Hans
6247018886
6247018886 07.03.2023 aktualisiert um 13:24:41 Uhr
Goto Top
Du verstehst nicht. Es gibt keine echte Fettschrift in der Konsole, das als Fett formatieren hebt es einfach nur etwas heller hervor!!! Lies meinen Post nochmal.
Hier siehst du es übrigens auch
https://superuser.com/questions/413073/windows-console-with-ansi-colors- ...

Die Konsole supported keine unterschiedlichen Schrift-Variationen (Kursiv/Fett/etc) in ein und der selben Konsole!

Nimm die Powershell und bau dir damit ein Window das dir deine Texte so anzeigt wie du es willst. Batch ist doch schon seit Jahren Gammelfleisch.
Lässt sich problemlos auch in einer Batch verwursten wenn man denn will ....
@(set "0=%~f0"^)#) & powershell -nop -ep bypass -noexit -c iex([io.file]::ReadAllText($env:0)) & exit/b  

Add-Type -A System.Windows.Forms
$form = New-Object System.Windows.Forms.Form -Property @{
    ClientSize = '200,200'  
    Text = "Blablub"  
}
    
$text = New-Object System.Windows.Forms.Label -Property @{
    Location = '10,10'  
    Size = '180,130'  
    Anchor = 'Top,Left,Right'  
    Text = "Donec commodo eget felis sed vehicula. Suspendisse pretium ultrices quam in iaculis. Aliquam a vulputate nisl. Etiam quam nunc, dictum ac nulla vel, posuere hendrerit metus. Quisque ante lacus, adipiscing id elit vel, ornare consectetur nisi. Etiam pretium, sapien vitae lobortis tempor, nibh justo cursus orci, non dapibus magna sapien quis enim. Phasellus rutrum elit justo, id pellentesque magna tempus dapibus. Etiam sed augue eros. Cras nec varius eros. Aenean sodales tincidunt dolor. Nunc ac metus tristique, porttitor justo eu, luctus diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut egestas libero quis velit volutpat, at scelerisque mauris porttitor."  
    Font = [System.Drawing.Font]::new('Arial',12,[System.Drawing.FontStyle]::Bold)  
}

$button = New-Object System.Windows.Forms.Button -Property @{
    Text = "OK"  
    Location = '10,160'  
    Size = '180,30'  
    Anchor = 'Bottom,Left,Right'  
    add_Click = {
        $form.Close()
    }
}
$form.Controls.AddRange(@($text,$button))
$form.ShowDialog() | out-null
Da hast du alle Freiheiten ..
JHB-Kaltduscher
JHB-Kaltduscher 07.03.2023 aktualisiert um 15:55:45 Uhr
Goto Top
Eine Bemerkung zum Batch.
Ich komme aus der Midrange Sparte bin 80 Jahre Jung und und musste mich mit der Windows Welt anfreunden.
Da schaltet man nicht mal eben auf Powershell um. Aber das werde ich nach der Beendigung meines laufenden
Projekts auch noch angehen.

Es gibt sehr wohl eine quasi Fettschrift (Bold) auf der Console.

Ich habe die Demoroutine von
mlocati Demo-Batchroutine
etwas abgewandelt, um den Beweis sichtbar zu machen.

Es wird im Batch ein Zeichen %ESC% erzeugt, (Kann ich z.Zt. noch nicht in Hex umsetzen)
Das Ergebnis der Subroutine
:setESC
@for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & @echo on & for %%b in (1) do rem"') do (  
@set ##red ESC=%%b rot,##
@Goto :EOF)
@exit /B 0
wird im 1.Schritt angezeigt..
@echo Ausgabe der Variable %%ESC%% =^>%ESC%^<= & @pause
Das nachfolgende Zeichen ##red< rot,## wird unterdrückt.
#exc-2

Die im 2. Schritt angezeigte Tabelle
zeigt Bold in Fettschrift.
#esc-1

Es also doch eine Steuerung möglich.

Gibt es im Batch eine einfache Möglichkeit den HEX-Wert anzuzeigen?

Der gesamte Code der Anzeige-Routine
@Setlocal EnableExtensions
@CHCP 1252
@@echo OFF

@call :setESC
@echo Ausgabe der Variable %%ESC%% =^>%ESC%^<= & @Pause

cls
@echo %ESC%[101;93m STYLES %ESC%[0m
@echo  %ESC%[0mReset%ESC%[0m
@echo  %ESC%[1mBold%ESC%[0m
@echo  %ESC%[4mUnderline%ESC%[0m
@echo  %ESC%[7mInverse%ESC%[0m
@echo.
@echo %ESC%[101;93m NORMAL FOREGROUND COLORS %ESC%[0m
@echo  %ESC%[30mBlack%ESC%[0m (black)
@echo  %ESC%[31mRed%ESC%[0m
@echo  %ESC%[32mGreen%ESC%[0m
@echo  %ESC%[33mYellow%ESC%[0m
@echo  %ESC%[34mBlue%ESC%[0m
@echo  %ESC%[35mMagenta%ESC%[0m
@echo  %ESC%[36mCyan%ESC%[0m
@echo  %ESC%[37mWhite%ESC%[0m
@echo.
@echo %ESC%[101;93m NORMAL BACKGROUND COLORS %ESC%[0m
@echo  %ESC%[40mBlack%ESC%[0m
@echo  %ESC%[41mRed%ESC%[0m
@echo  %ESC%[42mGreen%ESC%[0m
@echo  %ESC%[43mYellow%ESC%[0m
@echo  %ESC%[44mBlue%ESC%[0m
@echo  %ESC%[45mMagenta%ESC%[0m
@echo  %ESC%[46mCyan%ESC%[0m
@echo  %ESC%[47mWhite%ESC%[0m (white)
@echo.
@echo %ESC%[101;93m STRONG FOREGROUND COLORS %ESC%[0m
@echo  %ESC%[90mWhite%ESC%[0m
@echo  %ESC%[91mRed%ESC%[0m
@echo  %ESC%[92mGreen%ESC%[0m
@echo  %ESC%[93mYellow%ESC%[0m
@echo  %ESC%[94mBlue%ESC%[0m
@echo  %ESC%[95mMagenta%ESC%[0m
@echo  %ESC%[96mCyan%ESC%[0m
@echo  %ESC%[97mWhite%ESC%[0m
@echo.
@echo %ESC%[101;93m STRONG BACKGROUND COLORS %ESC%[0m
@echo  %ESC%[100mBlack%ESC%[0m
@echo  %ESC%[101mRed%ESC%[0m
@echo  %ESC%[102mGreen%ESC%[0m
@echo  %ESC%[103mYellow%ESC%[0m
@echo  %ESC%[104mBlue%ESC%[0m
@echo  %ESC%[105mMagenta%ESC%[0m
@echo  %ESC%[106mCyan%ESC%[0m
@echo  %ESC%[107mWhite%ESC%[0m
@echo.
@echo %ESC%[101;93m COMBINATIONS %ESC%[0m
@echo                      %ESC%[31mred foreground color%ESC%[0m
@echo                       %ESC%[7minverse foreground ^<-^> background%ESC%[0m
@echo                    %ESC%[7;31minverse red foreground color%ESC%[0m
@echo  and nested  %ESC%[7mbefore %ESC%[31mnested%ESC%[0m
@echo  and nested  %ESC%[31mbefore %ESC%[7mnested%ESC%[0m
pause

:setESC
@for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & @echo on & for %%b in (1) do rem"') do (@set ESC=%%b  
                                                                                                 @Goto :EOF)
@exit /B 0
6247018886
6247018886 07.03.2023 aktualisiert um 16:00:29 Uhr
Goto Top
Zitat von @JHB-Kaltduscher:

Es gibt sehr wohl eine Fettschrift (Bold) auf der Console.
"Jain" wenn man direkt eine fette Schriftart einstellt klar, aber es kann aus Prinzip immer nur eine Schriftart in der Konsole angezeigt werden, keine unterschiedlichen Varianten der Schrift gleichzeitig, siehst du ja selbst .... Es kann aus Prinzip immer nur was an Vordergrund und Hintergrund modifiziert werden nicht die Font-Varianten der Schriftart selbst.
Fett ist für die Esape-Sequenzen immer etwas heller statt Fett. Du hast da ein Verständnisproblem!
Die im 2. Schritt angezeigte Tabelle
zeigt Bold in Fettschrift.
BOLD ist hier nur etwas heller, aber in echt ist die Schrift nicht fetter!!!!!!! Brauchst du eine neue Brille?!

screenshot
JHB-Kaltduscher
JHB-Kaltduscher 07.03.2023 um 16:00:42 Uhr
Goto Top
Vielen Dank für die Hilfe,
und die Powershell Routine.

Ich werde mich einlesen.