Digamos que eu execute o seguinte no shell CMD:
set FOO=bar
Existe uma maneira de undefine esta variável, diferente de reciclar o shell CMD?
windows
batch-file
cmd
user288004
fonte
fonte
cmd.exe
) ??set var=
resposta funciona no MS-DOS 6.22 command.com da mesma forma que no Windows cmd.exe. (No entanto, ao contrário do Windows, colocar aspas duplas em torno de var = não funciona; em vez disso, ele cria uma variável de ambiente cujo nome começa com aspas duplas.)Respostas:
Sim, você pode desarmar com
Ou usando explicitamente:
Certifique-se de que nenhum caractere estranho (invisível) atrás do
=
sinal. Isso é:set FOO=
é diferente deset FOO=
.fonte
Uma maneira segura de remover a definição da variável é usar também aspas, então não haverá problemas com espaços à direita.
fonte
outro método
Nota: Isso não funcionaria em um prompt de comando interativo. Mas funciona em script de lote.
fonte
Isso funciona para mim no meu shell CMD do Windows 7:
fonte
set
comando. Se você tentarset FOO = bar
e depois tentarset FOO=
, não removerá 'FOO'. Por alguma razão, porém, eles não são (como?) Significativos por dentro% %
.Eu ofereceria o seguinte apenas como um comentário, mas acho que é importante o suficiente para ser autônomo.
Muitas das respostas anteriores mencionaram que é preciso ter cuidado com espaços à direita; e com certeza isso é verdade. No entanto, descobri que às vezes os espaços finais só querem entrar lá, não importa o que aconteça - particularmente se você estiver fazendo uma linha de comando de uma linha e precisar do espaço como separador de comando.
Esta é a solução para esse problema:
Colocando a declaração entre aspas duplas dessa maneira, o problema de espaçamento pode ser totalmente evitado. Isso também pode ser muito útil quando as variáveis são criadas concatenando para eliminar espaços entre - por exemplo - caminhos, por exemplo:
fonte