Wie ändere ich eine Umgebungsvariable mit Sonderzeichen?

Wie ändere ich eine Umgebungsvariable mit Sonderzeichen?

$P$_CMD>Meine Eingabeaufforderung ist auf (mit einem Leerzeichen am Ende) eingestellt . Das funktioniert gut. Allerdingsvirtuelle Umgebung'Saktivieren.bathat die folgende Zeile:

set PROMPT=(approot) %PROMPT%

Wenn ich diesen Befehl ausführe, beschwert sich cmd, dass

The syntax of the command is incorrect.

Dies ist nicht passiert, bevor ich meine Eingabeaufforderung geändert habe. Ich habe versucht, Anführungszeichen (doppelte "und einfache ') um zu setzen %PROMPT%, aber das funktioniert nicht. Wie ändere ich die Eingabeaufforderung, um den alten Wert zu verwenden, wenn der alte Wert Sonderzeichen enthält?

Antwort1

Bei der Prompt-Variable sollten Sie niemals Sonderzeichen verwenden. Verwenden Sie immer diespecial codesprompt /?die nach Möglichkeit mit zu finden sind .

Als Antwort auf Ihren Kommentar:

Bei anderen Variablen können SieSetLocal EnableDelayedExpansion. Dann verweisen Sie auf die Variablen mit !s statt %s.

Bei verzögerter Erweiterung werden Variablen zur Ausführungszeit und nicht zur Analysezeit erweitert. Diese Option wird mit aktiviert SETLOCAL command. Wenn die verzögerte Erweiterung aktiviert ist, können Variablen !variable_name!(zusätzlich zum normalen %variable_name%) mit referenziert werden.

Da die Variable zur Ausführungszeit erweitert wird und das Sonderzeichen >(in diesem Fall) nur zur Analysezeit besonders ist, umgehen Sie das Problem vollständig.

Zum Beispiel:

SetLocal EnableDelayedExpansion

set test=World^>
set test2=Hello !test!

Beachten Sie, dass dies ^das Escape-Zeichen ist, das Ihnen die Eingabe von Sonderzeichen ermöglicht (die Variable würde als gespeichert World>, es sei denn, Sie tun dies, set test=World^^^>was zu einem gespeicherten Wert von führt World^>, funktioniert dies für Ihre Frage nicht).

Escapen kann kompliziert werden. Um beispielsweise test2auf den Literalwert zu setzen !test!, müssen Sie verwenden ^^!test^^!, sonst erhalten Sie nur den Wert von test. Wenn es wirklich nötig ist, variiere ich normalerweise einfach die Anzahl der Escapezeichen, bis es funktioniert. Das ist einfacher, als zu versuchen, die Analyseregeln herauszufinden.

verwandte Informationen