ENABLEDELAYEDEXPANSION Ausrufezeichen wird nicht angezeigt?
Ich arbeite zur Zeit an einem Batch Script, aber das Problem ist folgendes: Ich muss dringend ein Ausrufezeichen anzeigen, habe aber die delayed expansion aktiviert. Ich weiss, wie man ein Ausrufezeichen anzeigt, wenn es ganz normal über echo gemacht wird.
echo ^^!
rem Ausgabe: !
Das funktioniert wunderbar, das Problem ist jetzt aber, der Text den ich angezeigt haben will, kommt aus einer Variable, die wiederum auch im Skript gesetzt wird. Ihr könnt euch das also etwas so vorstellen:
set text=hallo!
echo %text%
Das funktioniert natürlich nicht, ich bekomme nur "hallo" angezeigt. Aber wenn ich es so mache:
set text=hallo^^!
echo %text%
bekomme ich immernoch nur "hallo" angezeigt. Kann mir da jemand helfen?
2 Antworten
Das man mit ^^ Das Ausrufezeichen als normales Zeichen behandeln lassen kann, weißt du ja schon. Dein Problem ist nur dass es dir das Ausrufezeichen zwar beim Einlesen normal abgespeichert wird, beim Ausgeben aber nicht mehr.
Die Lösung wären also ^^ beim Ausgeben --> du brauchst mehr davon, das welche fürs Auslesen über bleiben.
set "text=hallo^^^!"
(Eine andere Möglichkeit wäre die delayedExpansion kurz auszuschalten, aber die obige ist besser)
~Tim
Okay, ich habe den Fehler gefunden. Ich weiss nicht wieso, aber ich habe einfach mal folgendes versucht:
set text=hallo^^! echo !text! rem Ausgabe: hallo!
Das klappt jetzt.