如果我启动一个新的 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