reset/remove如何在windows中使用setx设置环境变量?
How to reset/remove the environment variables set using setx in windows?
初始状态:ABC_HOME C:\abc\bin\
批处理文件开始
setx ABC_HOME "%ABC_HOME%;E:\newAbc\abc\bin\"
....
适当执行后
*What is the command*
- 运行 此命令用于获取最终状态。
最终状态:ABC_HOME C:\abc\bin\
由于ABC_HOME
是在批处理文件开始之前定义的,我们可以简单地设置一个临时变量来存储旧值:
SET OLD_ABC_HOME=%ABC_HOME%
setx ABC_HOME "%ABC_HOME%;E:\newAbc\abc\bin\"
<your code here>
setx ABC_HOME %OLD_ABC_HOME%
但是,如果您在同一个批处理文件中多次使用 setx
,则必须查询注册表以获取更新后的值,因此您可以使用如下内容:
setx ABC_HOME C:\abc\bin\
FOR /F "tokens=2* delims= " %%a IN ('reg query HKCU\Environment /v ABC_HOME') DO SET OLD_ABC_HOME=%%b
setx ABC_HOME "%ABC_HOME%;E:\newAbc\abc\bin\"
<your code here>
setx ABC_HOME %OLD_ABC_HOME%
原因是 setx
不适用于 运行 所在的 cmd.exe
实例的环境。
说明
reg query HKCU\Environment /v ABC_HOME
使用 Windows 注册表获取 ABC_HOME
变量的值,因为这在您的批处理环境中不可用。
FOR /F "tokens=2* delims= " %%a IN ('...') DO
将遍历 reg query
命令的输出并将其分成三部分。
delims=
会将 space 字符
设置为分割输出的分隔符
tokens=2*
指定我们想要分割输出的哪些部分。第二部分将进入 %%a
变量,第三部分和之后的所有部分将进入 %%b
变量。这样你的变量就可以包含 spaces.
SET OLD_ABC_HOME=%%b
将设置一个包含 ABC_HOME
. 内容的临时环境变量
setx ABC_HOME %OLD_ABC_HOME%
会将 ABC_HOME
设置回 运行 其他代码之前的旧值。它必须在代码的末尾。
进一步阅读
要取消设置环境变量,请使用以下语法:
set "ABC_HOME="
初始状态:ABC_HOME C:\abc\bin\
批处理文件开始
setx ABC_HOME "%ABC_HOME%;E:\newAbc\abc\bin\"
....
适当执行后
*What is the command*
- 运行 此命令用于获取最终状态。
最终状态:ABC_HOME C:\abc\bin\
由于ABC_HOME
是在批处理文件开始之前定义的,我们可以简单地设置一个临时变量来存储旧值:
SET OLD_ABC_HOME=%ABC_HOME%
setx ABC_HOME "%ABC_HOME%;E:\newAbc\abc\bin\"
<your code here>
setx ABC_HOME %OLD_ABC_HOME%
但是,如果您在同一个批处理文件中多次使用 setx
,则必须查询注册表以获取更新后的值,因此您可以使用如下内容:
setx ABC_HOME C:\abc\bin\
FOR /F "tokens=2* delims= " %%a IN ('reg query HKCU\Environment /v ABC_HOME') DO SET OLD_ABC_HOME=%%b
setx ABC_HOME "%ABC_HOME%;E:\newAbc\abc\bin\"
<your code here>
setx ABC_HOME %OLD_ABC_HOME%
原因是 setx
不适用于 运行 所在的 cmd.exe
实例的环境。
说明
reg query HKCU\Environment /v ABC_HOME
使用 Windows 注册表获取ABC_HOME
变量的值,因为这在您的批处理环境中不可用。FOR /F "tokens=2* delims= " %%a IN ('...') DO
将遍历reg query
命令的输出并将其分成三部分。delims=
会将 space 字符tokens=2*
指定我们想要分割输出的哪些部分。第二部分将进入%%a
变量,第三部分和之后的所有部分将进入%%b
变量。这样你的变量就可以包含 spaces.SET OLD_ABC_HOME=%%b
将设置一个包含ABC_HOME
. 内容的临时环境变量
setx ABC_HOME %OLD_ABC_HOME%
会将ABC_HOME
设置回 运行 其他代码之前的旧值。它必须在代码的末尾。
进一步阅读
要取消设置环境变量,请使用以下语法:
set "ABC_HOME="