我正在尝试使用批处理文件在Windows 7中设置PATH环境变量,但似乎没有生效。
我正在使用以下Windows命令:
set PATH=%cd%;%path%
pause
不过,这种方法似乎只在当前的cmd实例中才有效。我想要让它变成永久的,因为我首先设置了PATH,然后运行一个需要在该文件夹中定位库的程序。
我正在尝试使用批处理文件在Windows 7中设置PATH环境变量,但似乎没有生效。
我正在使用以下Windows命令:
set PATH=%cd%;%path%
pause
不过,这种方法似乎只在当前的cmd实例中才有效。我想要让它变成永久的,因为我首先设置了PATH,然后运行一个需要在该文件夹中定位库的程序。
使用 setx.exe 代替 set。
setx PATH "%cd%;%path%;"
pause
注意,这将为所有未来的 cmd 实例设置路径,但不包括当前实例。如果需要这样做,请运行原始的 set 命令。警告:保存的数据被截断为1024个字符。
它把它搞砸了。 - n611x007reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath"
检查%path%变量中的路径是否与系统路径相匹配。
%path%
时,它将展开任何在 %path%
中的变量。我认为您可以使用 setlocal EnableDelayedExpansion
来防止这种情况发生。 - Reed Hedges正如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
delims=
。在我(已退役)的WinXP上,reg query
使用 TAB 而不是空格来分隔项目!在典型的输出行中,我们可以在四个前导空格之后识别:值名称 TAB 值类型 TAB _值_。 - JosefZWM_SETTINGCHANGE
消息。这允许应用程序(例如shell)获取您的更新。WM_SETTINGCHANGE
并不简单。WM_SETTINGCHANGE
。 源讨论质疑是否有原生vbscript可用于此目的的API包装程序潜伏在某处。 - n611x007一个简单(可能更好)的解决方案是使用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
假设我想创建一个名为"ZIP_PROGRAM"的系统环境变量,并将其指向路径为"C:\Program Files\7-Zip\7z.exe"的可执行文件。
我将在DOS提示符下执行以下操作:
步骤1:执行以下代码: reg add "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",您应该能够看到系统环境变量已更新
使用以下命令
setx PATH "%PATH%;%MVN_HOME%\bin\"无论如何,它不会在当前会话中设置,您需要使用
set PATH="%PATH%;%MVN_HOME%\bin\"