Batch geht nicht bei bestimmtes Text?

1 Antwort

Und jetzt errate ich den Code Deiner Batch? Meine Hellseherkugel hat sich im laufe der Jahre abgenutzt und GF kommt leider nicht für dergleichen Verschleiß auf.

Die Zeichen |&<> sind Steuerzeichen und können nicht unmaskiert in einer Batch als Textzeichen verwendet werden.

Maskiert werden dergleichen Zeichen mit einem Carret ^ oder innerhalb von "Gänsefüßchen" ("Quotes").

echo ^| ^& ^< ^>
echo "  | & < > "

Das Problem bei echo, es gibt die Quotes als Teil des Textes aus. Kann oder möchte man nicht mit Carrets maskieren und die Quotes im Text sind lästig, bedarf es einiger Verenkungen: Eine For-Loop-Laufvariable wird von echo ungeachtet ihres Inhalts ausgegeben. Eine Tilde~ im "VariablenNamen" entfernt umgebende "Quotes".

for %%a in ("  | & < > ") do (echo %%~a)

...das sichert erstmal einigermaßen vor textbasierten Abstürtzen.

Fremde Zeichen ... ξένους χαρακτήρες

Das nächste ist die Art...

  • wie Du Deine Batch speicherst,
  • welche Zeichen der verwendete Consol-Font darstellen kann
  • und wie Texte in Deiner Batch interpretiert werden (ASCII oder UTF8)

Folgendes behebt einige Einschränkungen bezüglich der Darstellung von Zeichen.

UTF_Test.cmd

@echo off
chcp 65001 >nul
echo Müller mäht Öhlpflanzen
echo Маша и медведь
echo Ο Δίας κατεβαίνει από τον Όλυμπο
pause

wichtig:

  • am beginn der Batch, cmd mit chcp 65001 zwingen Textzeichen als UTF8 zu interpretieren.
  • Batch UTF8 codiert speichern

Bild zum Beitrag

dann klappt's auch mit recht ungewöhnlichen Zeichen

Bild zum Beitrag

Was Du nicht zur Laufzeit ändern kannst ist der Font der Console . Das heist, Du kannst nur die Zeichen anzeigen/nutzen , welche der Font bereitstellt.

Du kannst dir diese in der Zeichentabelle anzeigen lassen.

charmap.exe

Bild zum Beitrag

Ansonsten musst Du damit leben, das Batch bezüglich Texten gewaltige Probleme hat (schon immer hatte).

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
 - (cmd, Batch)  - (cmd, Batch)  - (cmd, Batch)