Batch: Wie kann man einen Satz / p mit Sonderzeichen in eine Datei aufnehmen?

972
Mark Deven

Ich arbeite an einem Skript, in dem ich den folgenden Code habe:

:top  Echo Enter Message set /p msg=">" if "%msg%"=="C" goto cancel echo %msg% >> File.txt goto top :cancel 

Ich suche nach einer Möglichkeit für das Set / p, &^*<>?|all das Zeug zu akzeptieren und es trotzdem in die Datei aufzunehmen. Ist das möglich? Derzeit ist das Skript nur knapp

2

1 Antwort auf die Frage

1
Worthwelle

Methode 1: verzögerte Erweiterung

Eine Möglichkeit, das zu tun, was Sie möchten, ist die Verwendung der verzögerten Erweiterung, bei der Sonderzeichen übrig bleiben .

Bei einer verzögerten Erweiterung werden Variablen in einer Batchdatei nicht zur Analysezeit, sondern zur Ausführungszeit erweitert. Diese Option wird mit dem Befehl SETLOCAL EnableDelayedExpansion aktiviert.

:top  Echo Enter Message set /p msg=">" if "%msg%"=="C" goto cancel setlocal EnableDelayedExpansion echo !msg! >> File.txt endlocal goto top :cancel 

Wie Sie sehen können, müssen Sie !msg!anstelle von verwenden %msg%.

Methode 2: Zitate

Wenn Sie die Variable in Anführungszeichen setzen, bleiben auch Sonderzeichen übrig, mit dem Nebeneffekt, dass diese Anführungszeichen auch in Ihre Ausgabe übernommen werden.

:top  Echo Enter Message set /p msg=">" if "%msg%"=="C" goto cancel echo "%msg%" >> File.txt goto top :cancel