Kai*_*aan 46 windows path batch-file environment-variables
我试图使用bat文件在Windows 7中设置PATH环境变量; 但它似乎没有用.
我正在使用这个Windows命令:
set PATH=%cd%;%path%
pause
Run Code Online (Sandbox Code Playgroud)
但是它似乎只对此cmd实例有效.我希望它是永久性的,因为我首先设置PATH,然后运行一个需要在该文件夹中找到库的程序.
Rya*_*ose 65
使用setx.exe而不是set.
setx PATH "%cd%;%path%;"
pause
Run Code Online (Sandbox Code Playgroud)
请注意,这将为所有将来的cmd实例设置路径,但不为当前实例设置路径.如果需要,还可以运行原始的set命令.
更新:如果第二个参数包含空格(%path%总是有),则需要引用它.请注意,如果%path%中的最后一个字符是反斜杠,它将转义尾随引号,最后一个路径条目将停止工作.我通过在结束报价之前附加分号来解决这个问题.
如果你不想冒险获得";;;;;;" 在重复运行后的路径末尾,然后在设置之前从%path%变量中删除任何尾部反斜杠,它将正常工作.
sim*_*mon 22
如果要在批处理文件中执行此操作,请使用reg命令在HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment键中更改注册表中的路径值.
就像是:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath"
Run Code Online (Sandbox Code Playgroud)
检查%path%变量中的路径是否与系统路径匹配.
Den*_*kem 17
正如wizlb指出的那样
setx PATH "%cd%;%path%;" -m
Run Code Online (Sandbox Code Playgroud)
将本地环境复制到系统环境,没有-m它会将系统环境复制到用户环境.两者都不可取.为了准确编辑注册表的一部分(系统或用户,以下示例中的系统),您需要这样做:
for /F "tokens=2* delims= " %%f IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path ^| findstr /i path') do set OLD_SYSTEM_PATH=%%g
setx.exe PATH "%OLD_SYSTEM_PATH%;%OTHER_STUFF%;" -m
Run Code Online (Sandbox Code Playgroud)
该解决方案的信用额度为http://www.robvanderwoude.com/ntregistry.php
Dav*_*nan 12
为了做到这一点,我认为你真的需要超越一个简单的批处理文件.在MSDN文档状态:
以编程方式添加或修改系统环境变量,把它们添加到HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控制\会话管理\环境的注册表项,然后广播
WM_SETTINGCHANGE
消息的lParam设置为字符串"环境".这允许应用程序(如shell)获取更新.
首先,如果没有UAC提升提示,您将无法写入该密钥.最好通过向可执行文件添加适当的清单来安排.其次,WM_SETTINGCHANGE
批处理文件中的广播并不简单.
在你的位置,我会写一个简短的控制台应用程序来完成这项工作.
归档时间: |
|
查看次数: |
82503 次 |
最近记录: |