美文网首页
windows设置环境变量的5种方法

windows设置环境变量的5种方法

作者: mudssky | 来源:发表于2023-03-21 14:09 被阅读0次

01.gui操作

这是最常用的,我之前一直用的是这一种

在此电脑右键,属性,高级系统设置,环境变量。。。

02.set 命令

和linux系统不一样,linux里面是可以把命令配到bashrc之类的文件里,这样环境变量就一直生效了。

set命令,只在这个终端内生效,退出就失效。

虽然也可以像linux一样把命令放到$profile里面,但是我觉得比较蠢,因为这样只有powershell终端里面生效,换成cmd是不会加载你这个profile的。

这个和powershell里面直接修改变量是一样的

像下面这样操作,当前窗口,搜索命令的Path变量就添加了。

$env:Path + ";path/your/new"

03.使用reg文件

04 setx命令

属于是很老的命令了

基本用法

setx 变量名称  变量值

默认改的是用户环境变量,尾部添加/m,可以修改系统环境变量。

例子:jdk版本管理

因为jdk是通过JAVA_HOME变量配置的,所以可以下载多个jdk,然后用setx设置环境变量来切换

这里用到了gsudo这个软件,比较方便,没有装这个软件需要打开管理员的终端执行命令

#安装jdk11
sudo choco install microsoftopenjdk11
#上面安装完会提示安装jdk的位置,这里我们赋值之后设置JAVA_HOME,设置到系统变量。
sudo setx JAVA_HOME C:\Program Files\Microsoft\jdk-11.0.18.10-hotspot /m
#顺便把bin目录加到path
sudo setx Path ($env:Path +';C:\Program Files\Microsoft\jdk-11.0.18.10-hotspot')
❯ setx  /?

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

Parameter List:
    /S     system          Specifies the remote system to connect to.

    /U     [domain\]user   Specifies the user context under which
                           the command should execute.

    /P     [password]      Specifies the password for the given
                           user context. Prompts for input if omitted.

    var                    Specifies the environment variable to set.

    value                  Specifies a value to be assigned to the
                           environment variable.

    /K     regpath         Specifies that the variable is set based
                           on information from a registry key.
                           Path should be specified in the format of
                           hive\key\...\value. For example,
                           HKEY_LOCAL_MACHINE\System\CurrentControlSet\
                           Control\TimeZoneInformation\StandardName.

    /F     file            Specifies the filename of the text file
                           to use.

    /A     x,y             Specifies absolute file coordinates
                           (line X, item Y) as parameters to search
                           within the file.

    /R     x,y string      Specifies relative file coordinates with
                           respect to "string" as the search parameters.

    /M                     Specifies that the variable should be set in
                           the system wide (HKEY_LOCAL_MACHINE)
                           environment. The default is to set the
                           variable under the HKEY_CURRENT_USER
                           environment.

    /X                     Displays file contents with x,y coordinates.

    /D     delimiters      Specifies additional delimiters such as ","
                           or "\". The built-in delimiters are space,
                           tab, carriage return, and linefeed. Any
                           ASCII character can be used as an additional
                           delimiter. The maximum number of delimiters,
                           including the built-in delimiters, is 15.

    /?                     Displays this help message.

NOTE: 1) SETX writes variables to the master environment in the registry.

      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

      3) On a remote system, variables created or modified by this tool
         will be available at the next logon session.

      4) The valid Registry Key data types are REG_DWORD, REG_EXPAND_SZ,
         REG_SZ, REG_MULTI_SZ.

      5) Supported hives:  HKEY_LOCAL_MACHINE (HKLM),
         HKEY_CURRENT_USER (HKCU).

      6) Delimiters are case sensitive.

      7) REG_DWORD values are extracted from the registry in decimal
         format.

Examples:
    SETX MACHINE COMPAQ
    SETX MACHINE "COMPAQ COMPUTER" /M
    SETX MYPATH "%PATH%"
    SETX MYPATH ~PATH~
    SETX /S system /U user /P password  MACHINE COMPAQ
    SETX /S system /U user /P password MYPATH ^%PATH^%
    SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
         Control\TimeZoneInformation\StandardName
    SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
         NT\CurrentVersion\CurrentBuildNumber" /M
    SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\
         System\CurrentControlSet\Control\TimeZoneInformation\
         StandardName
    SETX /S system /U user /P password  BUILD /K
         "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
         CurrentVersion\CurrentBuildNumber" /M
    SETX /F ipconfig.out /X
    SETX IPADDR /F ipconfig.out /A 5,11
    SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
    SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
    SETX /S system /U user /P password  /F c:\ipconfig.out /X

Path变量设置

setx有一个问题是设置的最大长度是1024

所以path很长的时候,就不能用这个方法了。

比如我执行这个命令就会报错

sudo setx Path ($env:Path +';C:/Program Files/Microsoft/jdk-11.0.18.10-hotspot/bin') /m

WARNING: The data being saved is truncated to 1024 characters.

05.powershell调用.net

其中GetEnvironmentVariable,一个参数是变量名,第二个参数target是范围,可以是 Process(当前进程),User(当前用户)或 Machine(本地计算机)

# 获取当前的 path 值
$path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
# 添加新的路径到 path 中
$path += ";C:\NewPath"
# 设置新的 path 值
[System.Environment]::SetEnvironmentVariable("Path",$path,"Machine")

相关文章

网友评论

      本文标题:windows设置环境变量的5种方法

      本文链接:https://www.haomeiwen.com/subject/gssmrdtx.html