Batch geht nicht bei bestimmtes Text?
Guten Tag,
ich bin dabei ein Batch Programm zu erstellen jedoch funktioniert es nicht mehr sobald ich Zeichen benutze welche nicht auf der Tastatur sind
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
dann klappt's auch mit recht ungewöhnlichen Zeichen
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
Ansonsten musst Du damit leben, das Batch bezüglich Texten gewaltige Probleme hat (schon immer hatte).