Windows有setx命令:

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

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

setx FOOBAR 1

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

setx 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:负责任地使用-如果你杀死了你的路径变量,不要怪我!

其他回答

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。

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

顺便说一下,我刚刚算出了如何用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:负责任地使用-如果你杀死了你的路径变量,不要怪我!