Windows - 刷新路径

问题描述 投票:0回答:3

我更改了 Windows 7 中的 PATH 变量。 但是,当我打开命令行窗口并运行

echo %path%
它仍然显示旧的路径。

如何在命令行中刷新 PATH? 我无法重新启动或注销。

windows command-line path
3个回答
0
投票

更改一个批处理会话中的任何变量都不会影响任何其他批处理会话。

您需要使用

setx
命令(请参阅提示中的
setx /?
)以使任何更改在执行
setx
后启动的任何会话中可见。

set "path=%path%;abcd"

会将

abcd
附加到路径变量(
PATH
变量是一组用分号分隔的目录名。)

setx path "%path%"

将指定路径的当前值(%path%)作为该用户未来所有实例的路径值。

%path%
被引用,因为它可能包含空格。

setx path "%path%" /m

将分配路径的当前值(%path%)作为该机器的所有用户的所有未来实例的路径值。


0
投票

从巧克力存储库中获取此内容,将其保存到您想要的任何内容 .cmd 并运行它,它应该每次都正确刷新路径而无需重新启动,出于某种原因,涉及

SET PATH=%PATH%;C:\CmdShortcuts
等命令的其他方法对我来说不起作用最新版本的 win 10 和 11。

::
:: RefreshEnv.cmd
::
:: Batch file to read environment variables from registry and
:: set session variables to these values.
::
:: With this batch file, there should be no need to reload command
:: environment every time you want environment changes to propagate

::echo "RefreshEnv.cmd only works from cmd.exe, please install the Chocolatey Profile to take advantage of refreshenv from PowerShell"
echo | set /p dummy="Refreshing environment variables from registry for cmd.exe. Please wait..."

goto main

:: Set one environment variable from registry key
:SetFromReg
    "%WinDir%\System32\Reg" QUERY "%~1" /v "%~2" > "%TEMP%\_envset.tmp" 2>NUL
    for /f "usebackq skip=2 tokens=2,*" %%A IN ("%TEMP%\_envset.tmp") do (
        echo/set "%~3=%%B"
    )
    goto :EOF

:: Get a list of environment variables from registry
:GetRegEnv
    "%WinDir%\System32\Reg" QUERY "%~1" > "%TEMP%\_envget.tmp"
    for /f "usebackq skip=2" %%A IN ("%TEMP%\_envget.tmp") do (
        if /I not "%%~A"=="Path" (
            call :SetFromReg "%~1" "%%~A" "%%~A"
        )
    )
    goto :EOF

:main
    echo/@echo off >"%TEMP%\_env.cmd"

    :: Slowly generating final file
    call :GetRegEnv "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" >> "%TEMP%\_env.cmd"
    call :GetRegEnv "HKCU\Environment">>"%TEMP%\_env.cmd" >> "%TEMP%\_env.cmd"

    :: Special handling for PATH - mix both User and System
    call :SetFromReg "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" Path Path_HKLM >> "%TEMP%\_env.cmd"
    call :SetFromReg "HKCU\Environment" Path Path_HKCU >> "%TEMP%\_env.cmd"

    :: Caution: do not insert space-chars before >> redirection sign
    echo/set "Path=%%Path_HKLM%%;%%Path_HKCU%%" >> "%TEMP%\_env.cmd"

    :: Cleanup
    del /f /q "%TEMP%\_envset.tmp" 2>nul
    del /f /q "%TEMP%\_envget.tmp" 2>nul

    :: capture user / architecture
    SET "OriginalUserName=%USERNAME%"
    SET "OriginalArchitecture=%PROCESSOR_ARCHITECTURE%"

    :: Set these variables
    call "%TEMP%\_env.cmd"

    :: Cleanup
    del /f /q "%TEMP%\_env.cmd" 2>nul

    :: reset user / architecture
    SET "USERNAME=%OriginalUserName%"
    SET "PROCESSOR_ARCHITECTURE=%OriginalArchitecture%"

    echo | set /p dummy="Finished."
    echo .```

-1
投票

路径是否需要设置为“系统变量”?如果没有,那么您可以设置用户的 PATH 变量的路径。

您需要关闭命令提示符,然后再次重新打开。

在下面输入。

echo %PATH%, 

它应该更新为新的。

© www.soinside.com 2019 - 2024. All rights reserved.