我有一个批处理文件" file.bat"将使用以下命令调用安装程序:
msiexec.exe /i "%~dp0\installer.msi"
安装程序将安装程序并更新Path变量。 虽然这很好用,但问题是当我尝试启动程序时找不到它,因为显然PATH变量没有更新。 我尝试使用以下内容重新启动批处理文件:
start cmd /c file.bat
但它没有用。 有没有办法刷新PATH变量,或者可能在新进程中重启批处理文件,以便检测新环境?
PS:手动重启批处理文件当然有效,但不是我想要的。
感谢。
答案 0 :(得分:1)
在Windows PowerShell中退出并再次运行
答案 1 :(得分:1)
最简单的方法是使用Chocolatey(freeare)。然后,您将可以使用简单的命令重新加载PATH(具有可变扩展名):
refreshenv
从cmd安装(需要管理员权限):
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
用法示例:
> SET JAVA_HOME=c:/java/jdk6
> SET PATH=%JAVA_HOME%/bin
> ECHO %PATH%
c:/java/jdk6/bin
> SET JAVA_HOME=c:/java/jdk8
> refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait...Finished..
> echo %PATH%
c:/java/jdk8/bin
答案 2 :(得分:0)
刷新%path%环境变量的简单批处理文件:
@echo off
echo.
echo Refreshing PATH from registry
:: Get System PATH
for /f "tokens=3*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set syspath=%%A%%B
:: Get User Path
for /f "tokens=3*" %%A in ('reg query "HKCU\Environment" /v Path') do set userpath=%%A%%B
:: Set Refreshed Path
set PATH=%userpath%;%syspath%
echo Refreshed PATH
echo %PATH%