Windows有setx命令:
Description:
Creates or modifies environment variables in the user or system
environment.
所以你可以这样设置一个变量:
setx FOOBAR 1
你可以像这样清除这个值:
setx FOOBAR ""
但是,该变量不会被删除。它保留在注册表中:
那么如何移除变量呢?
Windows有setx命令:
Description:
Creates or modifies environment variables in the user or system
environment.
所以你可以这样设置一个变量:
setx FOOBAR 1
你可以像这样清除这个值:
setx FOOBAR ""
但是,该变量不会被删除。它保留在注册表中:
那么如何移除变量呢?
当前回答
顺便说一下,我刚刚算出了如何用setx取消设置的永久变量。
简单地写引号,比如:
setx myvar ""
并在下一个cmd窗口重新启动,如果你搜索变量
set myvar
不会有任何安排。
其他回答
在PowerShell中,删除注册表值的方法是使用Remove-ItemProperty cmdlet。在这种情况下,持久化值(用于将来的进程)被删除:
Remove-ItemProperty HKCU:\Environment FOOBAR
如果你想从当前环境中删除它,你可以像这样从Env: "drive"中删除它:
rm env:\FOOBAR
不能使用SETX.exe来执行此操作。
我同意CupawnTae的观点。
SET对于更改主环境没有用处。
供您参考:系统变量在HKLM\ System \CurrentControlSet\Control\Session Manager\Environment中(比用户变量长很多)。
因此,一个名为FOOBAR的系统变量的完整命令是:
REG delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V FOOBAR
(请注意处理空格所需的引号。)
可惜setx命令不支持删除语法。:(
PS:负责任地使用-如果你杀死了你的路径变量,不要怪我!
要从当前命令会话中删除变量而不永久删除它,使用常规的内置set命令-在等号后面不放任何东西:
设置FOOBAR =
要确认,请执行不带参数的set命令并检查当前环境。该变量应该从列表中完全消失。
注意:这只会从当前环境中删除变量-它不会将更改保存到注册表中。当启动一个新的命令进程时,该变量将返回。
顺便说一下,我刚刚算出了如何用setx取消设置的永久变量。
简单地写引号,比如:
setx myvar ""
并在下一个cmd窗口重新启动,如果你搜索变量
set myvar
不会有任何安排。
DougWare回答中的命令并没有起作用,但这个却起了作用:
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v FOOBAR /f
快捷方式HKLM可用于HKEY_LOCAL_MACHINE。