12

Если я начну новый сеанс оболочки Windows и введите:

env

Я вижу множество переменных окружения. Я хочу отладить запуск программы командной строки, удалив все переменные окружения из текущего сеанса оболочки.

Я мог бы пойти по одному со следующим подходом:

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

Однако есть ли простой способ очистить их всех за один раз?

2 ответа2

13

Вы можете написать это в пакетном файле:

@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=
)

Он в основном проходит через каждую переменную среды, копирует их в командный файл (backupenv.bat) и затем очищает каждую переменную. Для их восстановления вы можете запустить файл backupenv.bat .

6

Если вы хотите очистить только все переменные среды для пакетного файла, это станет еще проще.

@echo off
Setlocal enabledelayedexpansion
Set >set

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

В последней строке выводятся все переменные среды, которых не должно быть, подтверждающие работоспособность кода.

Поскольку используется Setlocal , все изменения среды теряются после завершения пакета. Таким образом, если вы наберете Set после пакета, вы увидите, что все переменные среды все еще там, и, следовательно, нет необходимости сохранять их в файле резервной копии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .