zoukankan      html  css  js  c++  java
  • Windows 下环境变量设置(命令行)

    0. 背景

        查了一下 SETX 命令可以实现,先简单看了下帮助。以后再写一个实例。

    1. SETX /?    输出内容:

    SetX 有三种使用方式: 
    
    语法 1:
        SETX [/S system [/U [domain]user [/P [password]]]] var value [/M]
    
    语法 2:
        SETX [/S system [/U [domain]user [/P [password]]]] var /K regpath [/M]
    
    语法 3:
        SETX [/S system [/U [domain]user [/P [password]]]]
             /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
    
    描述:
        在用户或系统环境创建或修改环境变量。能基于参数、注册表项或文件输
        入设置变量。
    
    参数列表:
        /S     system          指定要连接到的远程系统。
    
        /U     [domain]user   指定应该在哪个用户上下文执行命令。
    
        /P     [password]      指定给定用户上下文的密码。如果省略则
                               提示输入。
    
        var                    指定要设置的环境变量。
    
        value                  指定分配给环境变量的值。
    
        /K     regpath         指定变量是基于注册表项的信息而设置的。
    
                               路径的格式应该是 hivekey...value。例如
                               HKEY_LOCAL_MACHINESystemCurrentControlSet
                               ControlTimeZoneInformationStandardName。
    
        /F     file            指定要使用的文本文件的文件名。
    
        /A     x,y             指定绝对文件坐标(线 X,项目 Y)作为在此文件
                               里搜索的参数。
    
        /R     x,y string      指定有关“字符串”作为搜索参数的相对文件坐标。
    
        /M                     指定应该在系统 (HKEY_LOCAL_MACHINE) 环境中设
                               置此变量。在 HKEY_CURRENT_USER 环境下,默认
                               将设置此变量。
    
        /X                     用 x,y 坐标显示文件内容。
    
        /D     delimiters      指定其他限定符,如 "," 或 ""。
                               内置分隔符是空格、制表符、回车和换行符。所有
                               ASCII 字符都可作为限定符。限定符的最大数量,
                               包括内置分隔符,是 15。
    
        /?                     显示此帮助消息。
    
    注意: 1) SETX 在注册表中将变量写入主机环境。
    
          2) 在本地系统,用此工具创建或修改的变量将在以后的命令窗口可用,但
             在当前的 CMD.exe 命令窗口。
    
          3) 在远程系统,用此工具创建或修改的变量在下次登录会话可用。
    
          4) 有效的注册表项数据类型是 REG_DWORD,REG_EXPAND_SZ,REG_SZ
             和 REG_MULTI_SZ。
    
          5) 受支持的配置单元:  HKEY_LOCAL_MACHINE (HKLM),
             HKEY_CURRENT_USER (HKCU)。
    
          6) 限定符区分大小写。
    
          7) REG_DWORD 的值是从注册表里以十进制格式提取出来的。
    
    示例:
        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_MACHINESystemCurrentControlSet
             ControlTimeZoneInformationStandardName
        SETX BUILD /K "HKEY_LOCAL_MACHINESoftwareMicrosoftWindows
             NTCurrentVersionCurrentBuildNumber" /M
        SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE
             SystemCurrentControlSetControlTimeZoneInformation
             StandardName
        SETX /S system /U user /P password  BUILD /K 
             "HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NT
             CurrentVersionCurrentBuildNumber" /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

    2. 另一篇参考博客,内容转载如下: (PS:其实写得不是太清爽 :))

    通常设置环境变量需要通过Windows的“环境变量”对话框来设置,但是这样比较麻烦。在CMD里面直接执行Set命令的话只对当前的session有效,CMD退出那么环境变量自动清除。
    
    在Windows7里面可以通过SetX来设置用户级以及系统级环境变量,其语法是:
    
    SETX Variable Value [-m]
    
    其中-m表示为系统级(Machine environment, HKLM),默认为用户级(User, HKCU)
    
    需要注意的是,这样设置的环境变量并不会在当前的CMD下生效,要想生效,必须重启一个CMD。
    
    将变量值设置为""(空字符串)并不会删除这个变量,要想删除需要执行
    
    REG delete HKCUEnvironment /V Variable (用户级)
    
    或者
    
    REG delete "HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment" /V Variable (系统级)
    
    很明显,删除的时候使用对话框可能更方便些。
    
    
    
    .bat文件中获取bat文件所在目录的参数为 %~dp0
    
    
    %~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录
    
    cd是转到这个目录,不过我觉得cd /d %~dp0 还好些
    
    选项语法:
    
    ~0 - 删除任何引号("),扩充 %0
    
    %~f0 - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)
    
    %~d0 - 仅将 %0 扩充到一个驱动器号
    
    %~p0 - 仅将 %0 扩充到一个路径
    
    %~n0 - 仅将 %0 扩充到一个文件名(“n”是name 文件名)
    
    %~x0 - 仅将 %0 扩充到一个文件扩展名
    
    %~s0 - 扩充的路径只含有短名(“s”为Short,短的)
    
    %~a0 - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)
    
    %~t0 - 将 %0 扩充到文件的日期/时间(“t”time)
    
    %~z0 - 将 %0 扩充到文件的大小(Size 大小)
    
    %~$PATH:0 - 查找列在路径环境变量的目录,并将 %0 扩充
    
    到找到的第一个完全合格的名称。如果环境变量名
    
    未被定义,或者没有找到文件,此组合键会扩充到
    
    空字符串
    
    可以组合修饰符来得到多重结果:
    
    %~dp0 - 仅将 %0 扩充到一个驱动器号和路径
    
    %~nx0 - 仅将 %0 扩充到一个文件名和扩展名
    
    %~fs0 - 仅将 %0 扩充到一个带有短名的完整路径名
    
    %~dp$PATH:0 - 查找列在路径环境变量的目录,并将 %I 扩充
    
    到找到的第一个驱动器号和路径。
    
    %~ftza0 - 将 %0 扩充到类似输出线路的 DIR
    
    %0为当前批处理文件
    
    如果0换成1为第一个文件,2为第2个
    
    ****************************************************
    
    %0代指批处理文件自身
    
    %~d0 是指批处理所在的盘符
    
    %~dp0 是盘符加路径
    
    cd %~dp0 就是进入批处理所在目录
  • 相关阅读:
    python数据集处理,加载成list
    *和multiply
    RuntimeWarning: overflow encountered in exp
    机器学习 回归
    argsort()
    transpose()、T
    numpy、matplotlib第三方库安装
    feedparser安装
    机器学习实战错误校正
    机器学习 基于概率论的分类方法:朴素贝叶斯
  • 原文地址:https://www.cnblogs.com/juking/p/4899765.html
Copyright © 2011-2022 走看看