Isz*_*szi 13 windows environment-variables batch-file
我需要做什么:
%PATH%
在 SYSTEM 级别将文件夹附加到环境变量。我需要怎么做:
.BAT
文件的方法。脚本需要处理的系统:
我对SET
命令相当熟悉,但我也知道它通常会覆盖现有变量而不是附加到它。那是不能接受的。是否有另一个工具(或选项SET
,我不知道)将附加到变量?或者,我是否需要在脚本中放置一个解决方法,包括将现有变量临时复制到另一个变量或文本文件?
另外,我的理解是SET
不会永久改变变量。我已经看到提到SETX
,但这似乎并没有内置到 Windows XP SP3 中(或者,至少,它似乎在我正在使用的系统上不可用)。是否有另一种方法可以通过注册表编辑或其他方式使更改永久化?
我已经环顾四周,并从这里学到了一些关于在 Windows 中设置环境变量的知识。但是,我还没有找到一个完全符合我需要的重复问题。如果有的话,请告诉我。
以下命令将“C:\bin”添加到您的路径中,然后将新路径保存到注册表中:
set path=%path%;C:\bin
reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%path%" /f
Run Code Online (Sandbox Code Playgroud)
请注意,%path%
假设路径不包含空格,引号周围的引号是可选的。
我只在 XP SP3 上测试过这个,但它应该也适用于较新的版本。
我猜想在机器重新启动之前登录的新用户可能无法获得新路径。
Harry 对 %SystemRoot% 的评论是正确的,如果你想保留这些,你需要首先从注册表中提取旧的路径值:
@echo OFF
set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path
FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
set ValueName=%%A
set ValueValue=%%C
)
if defined ValueName (
set newPath=%ValueValue%;C:\bin
reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%newPath%" /f
set path=%path%;C:\bin
) else (
@echo %KEY_NAME%\%VALUE_NAME% not found.
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20127 次 |
最近记录: |