Nehmen wir an, ich führe Folgendes in der CMD-Shell aus:
set FOO=bar
Gibt es eine andere Möglichkeit, diese Variable aufzuheben, als die CMD-Shell zu recyceln?
Nehmen wir an, ich führe Folgendes in der CMD-Shell aus:
set FOO=bar
Gibt es eine andere Möglichkeit, diese Variable aufzuheben, als die CMD-Shell zu recyceln?
set var=
funktioniert Ihre Antwort unter MS-DOS 6.22 command.com genauso wie unter Windows cmd.exe. (Im Gegensatz zu Windows funktioniert das Setzen von doppelten Anführungszeichen um var = jedoch nicht. Stattdessen wird eine Umgebungsvariable erstellt, deren Name mit einem doppelten Anführungszeichen beginnt.)
Antworten:
Ja, Sie können es mit deaktivieren
set FOO=
Oder explizit verwenden:
set "FOO="
Stellen Sie sicher, dass keine nachfolgenden (unsichtbaren) Zeichen hinter dem =
Zeichen stehen. Das ist:
set FOO=
ist anders als set FOO=
.Dies funktioniert für mich in meiner Windows 7 CMD-Shell:
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
set
Befehl von Bedeutung. Wenn Sie es versuchen set FOO = bar
und dann versuchen set FOO=
, wird 'FOO' nicht deaktiviert. Aus irgendeinem Grund sind sie jedoch im Inneren nicht (als?) Bedeutend % %
.
Ich würde das Folgende nur als Kommentar anbieten, aber ich denke, es ist wichtig genug, um für sich allein zu stehen.
In vielen der vorherigen Antworten wurde erwähnt, dass man sich vor Leerzeichen hüten muss. und sicher ist das wahr. Ich habe jedoch festgestellt, dass nachfolgende Leerzeichen manchmal nur dort hineingelangen möchten, egal was passiert - insbesondere, wenn Sie einen Befehlszeilen-Einzeiler ausführen und das Leerzeichen als Befehlstrennzeichen benötigen.
Dies ist die Lösung für dieses Problem:
SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
Wenn Sie die Deklaration auf diese Weise in doppelte Anführungszeichen setzen, kann das Abstandsproblem vollständig vermieden werden. Dies kann auch sehr nützlich sein, wenn Variablen durch Verketten erstellt werden, um Leerzeichen zwischen beispielsweise Pfaden zu entfernen, z.
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there
cmd.exe
)?