如何从 Windows shell 会话中清除所有环境变量?

如何从 Windows shell 会话中清除所有环境变量?

如果我启动一个新的 Windows shell 会话并输入:

env

我看到设置了许多环境变量。我想通过删除以下代码来调试命令行程序的运行:全部来自当前 shell 会话的环境变量。

我可以用以下方法逐一进行:

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

但是有没有一种简单的方法可以一次性清除所有这些呢?

答案1

您可以在批处理文件中写入此内容:

@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文件。

答案2

如果您只想清除批处理文件的所有环境变量,那就更容易了。

@echo off
Setlocal enabledelayedexpansion
Set >set

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

最后一行输出所有环境变量,但应该为零,以确认代码有效。

因为Setlocal使用了,批处理结束后所有环境更改都会丢失。因此,如果您Set在批处理之后键入,您将看到所有环境变量仍然存在,因此无需将其存储在备份文件中。

答案3

@echo 关闭

设置变量=“”

如果不存在 version1.txt 转到 END

对于 /F "delims=" %%a 在 ('findstr /C:%1 version.txt') 中执行设置 var=%%a echo %var%

对于/f“tokens = 1,2,3,4 delims =,” %% a在(“%var%”)中执行(

设置本地启用延迟扩展

首先设置=%%a

设置第二个=%%b

设置第三个=%%c

第四组=%%d

回显 %first% 和 %second% 和 %third% 和 %fourth%

)

转到 EXIT:END echo 文件未找到:EXIT

相关内容