Chr*_*mer 12 windows path command-line environment-variables
我有一个带有系统级配置的系统 PATH 变量。我使用用户 PATH 变量来补充具有用户特定配置的 PATH。
我想从命令行更新用户 PATH 变量,例如使用 setx。
但我不知道如何在 setx 中引用现有的用户路径。
在以下命令中(不带 /M 的 setx)
setx PATH c:\my-user-specifc-bin-path;%PATH%
Run Code Online (Sandbox Code Playgroud)
第一个路径表示用户路径,但第二个 %PATH% 将被“完整”(用户 + 系统)路径替换。
所以这意味着整个系统路径将在用户路径中复制......这绝对不是我想要的。
我想要:
Kar*_*ran 12
设置用户路径覆盖任何以前的值:
setx PATH "C:\MyPath1"
Run Code Online (Sandbox Code Playgroud)
要将值“C:\MyPath0”添加到现有用户路径:
for /f "skip=2 tokens=3*" %a in ('reg query HKCU\Environment /v PATH') do @if [%b]==[] ( @setx PATH "C:\MyPath0;%~a" ) else ( @setx PATH "C:\MyPath0;%~a %~b" )
Run Code Online (Sandbox Code Playgroud)
要将值“C:\MyPath2”附加到现有用户路径:
for /f "skip=2 tokens=3*" %a in ('reg query HKCU\Environment /v PATH') do @if [%b]==[] ( @setx PATH "%~a;C:\MyPath2" ) else ( @setx PATH "%~a %~b;C:\MyPath2" )
Run Code Online (Sandbox Code Playgroud)
if-else 条件是必需的,因为用户路径可能包含也可能不包含空格。如果需要,您可以将命令保存为通用批处理文件(确保将每个 % 符号加倍),这些文件接受要设置/前置/附加的值作为参数。
批处理文件
:: PATH-ADD - add a path to user path environment variable
@echo off
setlocal
:: set user path
set ok=0
for /f "skip=2 tokens=3*" %%a in ('reg query HKCU\Environment /v PATH') do if [%%b]==[] ( setx PATH "%%~a;%1" && set ok=1 ) else ( setx PATH "%%~a %%~b;%1" && set ok=1 )
if "%ok%" == "0" setx PATH "%1"
:end
endlocal
echo.
Run Code Online (Sandbox Code Playgroud)
小智 4
PowerShell版本,为用户设置PATH:
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "C:\MyPath1"
Run Code Online (Sandbox Code Playgroud)
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "$((Get-ItemProperty -path HKCU:\Environment\ -Name Path).Path);C:\MyPath1"
Run Code Online (Sandbox Code Playgroud)
PS> Set-ItemProperty -path HKCU:\Environment\ -Name Path -Value "C:\MyPath1;$((Get-ItemProperty -path HKCU:\Environment\ -Name Path).Path)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32410 次 |
| 最近记录: |