Windows -刷新路径

pqwbnv8z  于 2022-12-14  发布在  Windows
关注(0)|答案(4)|浏览(286)

我已经在Windows 7中更改了PATH变量。但是,当我打开命令行窗口并运行echo %path%时,它仍然显示旧的PATH。
如何在命令行中刷新PATH?我无法重新启动或注销。

aiazj4mn

aiazj4mn1#

更改一个批处理会话中的任何变量不会影响任何其他批处理会话。
您需要使用setx命令(请参见提示符下的setx /?),使任何更改在执行setx后启动的任何会话中可见。

set "path=%path%;abcd"

会将abcd附加到路径变数(PATH变数是一组以分号分隔的目录名称)。

setx path "%path%"

将指定path(%path%)的当前值作为此用户的所有将来示例的path值。%path%被忽略,因为它可能包含空格。

setx path "%path%" /m

将指定路径(%path%)的当前值作为此计算机的所有用户的所有将来示例的路径值。

wpx232ag

wpx232ag2#

把这个从chocolatey repo,保存到任何你想要的。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 .```
fnx2tebb

fnx2tebb3#

是否需要将路径设置为“系统变量”?如果不需要,则可以改为将路径设置为用户的PATH变量。
您需要关闭命令提示符,然后重新打开。
在下面键入。

echo %PATH%,

它应该更新为新的。

l0oc07j2

l0oc07j24#

上面的答案非常接近,它缺少一个步骤和一个更新。

***第一步***将您的变更添加到路径这仍然有效:

set "path=%path%;abcd"

(you也可以使用GUI的“编辑系统环境变量”来编辑PATH)

***第二步***我们要将更改应用到用户帐户,如上所述:

setx path "%path%"

***第三步***这是变化。当我运行他的命令行时,它看起来工作,但它没有。运行/?命令与Setx这是我们应该运行的命令行:

SETX /S system /U user /P password MYPATH ^%PATH^%

我从微软那里得到的例子也很有帮助:

setx /s computer1 /u maindom\hiropln /p p@ssW23 MYPATH %PATH%

这确实通过CMD设置了你的机器系统环境变量。就我个人而言,我发现在PowerShell中更容易。祝脚本编写孩子们玩得开心!p值
PS关闭并重新打开命令shell以查看更改

相关问题