Powiedzmy, że wykonuję następujące czynności w powłoce CMD:
set FOO=bar
Czy istnieje sposób na cofnięcie definicji tej zmiennej, inny niż recykling powłoki CMD?
windows
batch-file
cmd
user288004
źródło
źródło
cmd.exe
)?set var=
odpowiedź działa pod MS-DOS 6.22 command.com tak samo, jak działa pod Windows cmd.exe. (Jednak, w przeciwieństwie do Windows, umieszczenie w cudzysłowie var = nie działa, zamiast tego tworzy zmienną środowiskową, którego nazwa zaczyna się podwójnym cudzysłowem.)Odpowiedzi:
Tak, możesz to wyłączyć za pomocą
Lub jawnie używając:
Upewnij się, że po
=
znaku nie występują żadne dodatkowe (niewidoczne) znaki końcowe . To jest:set FOO=
różni się odset FOO=
.źródło
Bezpiecznym sposobem usunięcia zmiennej jest użycie również cudzysłowów, wtedy nie ma problemów ze spacjami końcowymi.
źródło
inna metoda
Uwaga: to nie zadziała w interaktywnym wierszu polecenia. Ale działa w skrypcie wsadowym.
źródło
To działa dla mnie w mojej powłoce CMD systemu Windows 7:
źródło
set
poleceniu znaczące są spacje . Jeśli spróbujesz,set FOO = bar
a następnie spróbujeszset FOO=
, nie spowoduje to usunięcia „FOO”. Jednak z jakiegoś powodu nie są (jak?) Znaczące w środku% %
.Przedstawiłbym następujące uwagi tylko jako komentarz, ale myślę, że jest to wystarczająco ważne, aby stanąć samodzielnie.
Wiele z poprzednich odpowiedzi wspominało, że należy uważać na spacje końcowe; i na pewno to prawda. Jednak odkryłem, że czasami końcowe spacje chcą się tam dostać bez względu na wszystko - szczególnie jeśli robisz jednowierszowy wiersz poleceń i potrzebujesz spacji jako separatora poleceń.
Oto rozwiązanie tego problemu:
Dzięki zawijaniu deklaracji w podwójne cudzysłowy w ten sposób można całkowicie uniknąć problemu z odstępami. Może to być również bardzo przydatne, gdy zmienne są tworzone przez konkatenację w celu wyeliminowania spacji między - na przykład - ścieżkami, np .:
źródło