Windows有setx命令:

Description:
    Creates or modifies environment variables in the user or system
    environment.

所以你可以这样设置一个变量:

setx FOOBAR 1

你可以像这样清除这个值:

setx FOOBAR ""

但是,该变量不会被删除。它保留在注册表中:

那么如何移除变量呢?


当前回答

从当前环境中删除变量(不是永久地):

set FOOBAR=

要永久地从用户环境中删除变量(这是setx放置它的默认位置):

REG delete HKCU\Environment /F /V FOOBAR

如果变量是在系统环境中设置的(例如,如果您最初使用setx /M设置它),作为管理员运行:

REG delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V FOOBAR

注意:上面的REG命令不会影响任何现有进程(以及从现有进程中派生出来的一些新进程),因此,如果更改对立即生效很重要,那么最简单、最可靠的方法就是注销并重新登录或重新启动。如果这不是一个选择,或者您想深入挖掘,这里的一些其他答案有一些很好的建议,可能适合您的用例。

其他回答

DougWare回答中的命令并没有起作用,但这个却起了作用:

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v FOOBAR /f

快捷方式HKLM可用于HKEY_LOCAL_MACHINE。

你也可以创建一个小的VBScript脚本:

Set env = CreateObject("WScript.Shell").Environment("System")
If env(WScript.Arguments(0)) <> vbNullString Then env.Remove WScript.Arguments(0)

然后将其命名为%windir%\System32\cscript.exe //Nologo "script_name。根据“FOOBAR。

缺点是需要额外的脚本,但不需要重新启动。

我同意CupawnTae的观点。

SET对于更改主环境没有用处。

供您参考:系统变量在HKLM\ System \CurrentControlSet\Control\Session Manager\Environment中(比用户变量长很多)。

因此,一个名为FOOBAR的系统变量的完整命令是:

REG delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /F /V FOOBAR

(请注意处理空格所需的引号。)

可惜setx命令不支持删除语法。:(

PS:负责任地使用-如果你杀死了你的路径变量,不要怪我!

setx FOOBAR ""

只是导致FOOBAR的值为空字符串。(虽然,它显示的是带有""的set命令,所以可能双引号是字符串。)

我使用:

set FOOBAR=

然后FOOBAR就不再列在set命令中了。(不需要注销。)

Windows 7 32位,使用命令提示符,非管理员是我使用的。(不是cmd或Windows + R,这可能是不同的。)

顺便说一句,我没有看到我在注册表的任何地方创建的变量,我创建了它。我使用RegEdit而不是管理员。

要从当前命令会话中删除变量而不永久删除它,使用常规的内置set命令-在等号后面不放任何东西:

设置FOOBAR =

要确认,请执行不带参数的set命令并检查当前环境。该变量应该从列表中完全消失。

注意:这只会从当前环境中删除变量-它不会将更改保存到注册表中。当启动一个新的命令进程时,该变量将返回。