我正在尝试使用bat文件在Windows 7中设置PATH环境变量;但它似乎不起作用。
我正在使用这个Windows命令:
set PATH=%cd%;%path%
pause
但是它似乎只对此cmd实例有效。我希望它是永久性的,因为我首先设置PATH,然后运行一个需要在该文件夹中找到库的程序。
答案 0 :(得分:64)
使用setx.exe而不是set。
setx PATH "%cd%;%path%;"
pause
请注意,这会为所有将来的cmd实例设置路径,但不为设置当前cmd实例的路径。如果需要,还可以运行原始的set命令。
更新:如果第二个参数包含空格(%path%总是有),则需要引用它。请注意,如果%path%中的最后一个字符是反斜杠,它将转义尾随引号,最后一个路径条目将停止工作。我通过在结束报价之前附加分号来解决这个问题。
如果你不想冒险获得“;;;;;;”在重复运行后的路径末尾,然后在设置之前从%path%变量中删除任何尾部反斜杠,它将正常工作。
答案 1 :(得分:22)
如果要在批处理文件中执行此操作,请使用 reg 命令在HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment键中更改注册表中的路径值。 / p>
类似的东西:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath"
检查%path%变量中的路径是否与系统路径匹配。
答案 2 :(得分:17)
正如wizlb所说,做
setx PATH "%cd%;%path%;" -m
将本地环境复制到系统环境,没有-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
答案 3 :(得分:12)
为了做到这一点,我认为你真的需要超越一个简单的批处理文件。 MSDN documentation州:
以编程方式添加或修改系统环境变量,将它们添加到 HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ Environment 注册表项,然后使用
WM_SETTINGCHANGE
消息> lParam 设置为字符串“Environment”。这允许应用程序(如shell)获取更新。
首先,如果没有UAC提升提示,您将无法写入该密钥。最好通过向可执行文件添加适当的清单来安排。其次,广播WM_SETTINGCHANGE
在批处理文件中并不简单。
在你的位置上,我会编写一个简短的控制台应用程序来完成这项工作。
答案 4 :(得分:4)
一个简单的(可能更好)解决方案是使用PathMgr.cmd
关闭https://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e
中的pathmgr_1.0.2.zip解压缩并将pathmgr.cmd放在与批处理文件相同的文件夹中,然后在批处理文件中写下以下两行:
call pathmgr.cmd /del %cd% /y
call pathmgr.cmd /add %cd% /y
这将:
1)只更新用户变量PATH, 2)多次不包括系统PATH
您也可以多次运行批处理文件,它只会在PATH中包含您当前的路径ONCE。
答案 5 :(得分:0)
假设我想创建一个名为“ZIP_PROGRAM”的系统环境变量,我想将其指向路径“reg add C:\ Program Files \ 7-Zip \ 7z.exe
的可执行文件我将在DOS提示符下执行以下操作:
Step1:执行以下代码 reg添加“HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment”/ v ZIP_PROGRAM / t REG_SZ / d“C:\ Program Files \ 7-Zip \ 7z.exe”/ f
步骤2:注销然后登录
步骤3:打开DOS提示符并执行:“set z”,您应该能够看到系统环境变量更新
答案 6 :(得分:0)
使用此命令 setx PATH"%PATH%;%MVN_HOME%\ bin \"
无论如何,它不会在你需要使用的当前会话中设置
设置PATH ="%PATH%;%MVN_HOME%\ bin \"