Como faço para limpar todas as variáveis de ambiente de uma sessão de shell do Windows?

12

Se eu iniciar uma nova sessão de shell do Windows e digitar:

env

Eu vejo muitas variáveis de ambiente definidas. Eu quero depurar a execução de um programa de linha de comando removendo variáveis de ambiente all da sessão de shell atual.

Eu poderia ir embora um por um com a seguinte abordagem:

SET FOO=
SET BAR=
SET ... ... ...

No entanto, existe uma maneira simples de eliminá-los de uma só vez?

    
por TiGz 04.05.2011 / 16:58

2 respostas

13

Você pode escrever isso em um arquivo de lote:

@echo off
if exist ".\backupenv.bat" del ".\backupenv.bat"
for /f "tokens=1* delims==" %%a in ('set') do (
echo set %%a=%%b>> .\backupenv.bat
set %%a=
)

Basicamente, ele é executado em cada variável de ambiente, faz backup deles em um arquivo de lote ( backupenv.bat ) e, em seguida, limpa cada variável. Para restaurá-los, você pode executar o arquivo backupenv.bat .

    
por 04.05.2011 / 17:23
6

Se você quiser apenas limpar todas as variáveis de ambiente para o arquivo em lote, ficará ainda mais fácil.

@echo off
Setlocal enabledelayedexpansion
Set >set

For /F "tokens=1* delims==" %%i in (set) do set %% %i=
Del set
Set

A linha final produz todas as variáveis de ambiente, que devem ser nenhuma, confirmando o código trabalhado.

Como Setlocal é usado, todas as alterações no ambiente são perdidas após o término do lote. Portanto, se você digitar Set após o lote, verá que todas as variáveis de ambiente ainda estão lá, portanto não é necessário armazená-las em um arquivo de backup.

    
por 26.03.2016 / 20:22

Tags