bio*_*ark 6 windows batch-file
在环境变量中,我有一个用于用户变量和系统变量的PATH变量.
在批处理脚本中,为了让我用新的给定路径附加用户PATH变量,我需要选择当前值.不幸的是,%PATH%返回用户变量和系统变量的组合.
当然我只想为用户变量添加一个新的自定义路径值.用系统路径增强它也没有意义.这就是我有2个变量的原因.
提前致谢.
编辑:在文档中找到以下语句:
%PATH%变量设置为系统变量和用户变量,组合2个值以为当前登录用户提供PATH ....
例:
用户变量:
PATH
value: c:\dev
Run Code Online (Sandbox Code Playgroud)
系统变量
PATH
value: c:\Program Files
Run Code Online (Sandbox Code Playgroud)
我想要做的是,在用户变量中添加值:c:\ tmp,以便最后PATH将具有值:c:\ dev; c:\ tmp
但是,如果打开一个cmd窗口:
echo %PATH%
c:\Program Files;c:\dev
Run Code Online (Sandbox Code Playgroud)
所以setx将执行以下操作
setx path "%path%;c:\tmp"
Run Code Online (Sandbox Code Playgroud)
打开新的cmd
echo %PATH%
c:\Program Files;c:\dev;c:\tmp
Run Code Online (Sandbox Code Playgroud)
这是错误的,因为我只需要c:\ dev; c:\ tmp
我希望这次我更清楚.
你是如何修改变量的?
只有一个环境变量PATH,因此您可以继续进行更改.这些更改是暂时的(并且是您的流程及其子项的本地更改).
Registry中有两个(实际上更多)持久性位置,在创建进程时从中初始化环境变量.您可以使用reg实用程序修改它们.没有歧义,因为它们是分开的:
您可能必须重新登录才能使注册表中的更改生效(我不记得是否有一种通过编程方式通知资源管理器这些设置已更改).另请注意,默认情况下,子进程继承其父进程的环境(除非父进程采取特殊措施),例如,如果启动cmd窗口并稍后通过系统设置对话框修改环境,则启动的应用程序cmd将无法看到变化.
[UPD]您可以使用reg实用程序从注册表中获取特定于用户的环境变量的值:
reg query HKCU\Environment /v PATH
Run Code Online (Sandbox Code Playgroud)
虽然你必须过滤其实际值的输出,因为它会吐出一些无用的文本.这是一个示例咒语:
for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set value=%B
Run Code Online (Sandbox Code Playgroud)
它会将结果存储在环境变量中value.记得%在批处理文件中使用它时加倍.
| 归档时间: |
|
| 查看次数: |
2061 次 |
| 最近记录: |