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 指定变量是基于注册表项的信息而设置的。 路径的格式应该是 hive\key\...\value。例如
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\TimeZoneInformation\StandardName。 /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_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

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

通常设置环境变量需要通过Windows的“环境变量”对话框来设置,但是这样比较麻烦。在CMD里面直接执行Set命令的话只对当前的session有效,CMD退出那么环境变量自动清除。

在Windows7里面可以通过SetX来设置用户级以及系统级环境变量,其语法是:

SETX Variable Value [-m]

其中-m表示为系统级(Machine environment, HKLM),默认为用户级(User, HKCU)

需要注意的是,这样设置的环境变量并不会在当前的CMD下生效,要想生效,必须重启一个CMD。

将变量值设置为""(空字符串)并不会删除这个变量,要想删除需要执行

REG delete HKCU\Environment /V Variable (用户级)

或者

REG delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /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 就是进入批处理所在目录

Windows 下环境变量设置(命令行)的更多相关文章

  1. Linux下环境变量设置 (转)

    Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...

  2. Linux下环境变量设置技巧

    Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置 区别: 1.两个文件都是设置环境变量文件的,/etc/profile是 ...

  3. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  4. linux下环境变量设置的问题

    在当前环境变量前新增加一个路径 export PATH=/your/bin/path:$PATH export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_P ...

  5. Mac下环境变量设置错误,导致命令行命令不能使用后的解决办法

    1 在命令行中,临时设置环境变量 export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 2 各种命令就可以使用了.然后修复错误的环境变量配置 ...

  6. Windows下环境变量显示、设置或删除操作详情

    显示.设置或删除 cmd.exe 环境变量. SET [variable=[string]] variable 指定环境变量名. string 指定要指派给变量的一系列字符串. 要显示当前环境变量,键 ...

  7. Linux下环境变量设置

    分类 Linux下的环境变量按生存周期来划分,可以划分为两种: 1)永久的:需要修改配置文件, 变量永久生效 2)临时的:直接在终端使用export命令声明即可,但是关闭shell后失效. 设置方法 ...

  8. Ubuntu下环境变量设置

    [内容来自网络] 相应配置文件介绍: 1) /etc/profile :在登录时,操作系统定制用户环境使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,改文件被执行 2) /e ...

  9. ant Windows下环境变量配置 安装 编译

    下载 官网:[http://ant.apache.org/] 其他版本:[http://archive.apache.org/dist/ant/binaries/] 点击这个进入下载页面 Window ...

随机推荐

  1. php7.0-fpm.sock

    .sock  这种方式是套接字的方式连接的

  2. 如何查看api项目接口

    http://www.api.com/Api/Page/index/?format_type=json&api_cate=cms&ma=8026

  3. 【Web】Sublime Text 3 连接sftp/ftp(远程服务器)

    在 Win 下常用 Xftp 软件来和远程服务传递文件,但是要是在项目开发的时候频繁的将远程文件拖到本地编辑然后再传回远程服务器,那真是麻烦无比,但是Sublime中SFTP插件,它让这世界美好了许多 ...

  4. canvas 实现掉落效果

    var canvas = document.getElementById('canvas'); var cxt = canvas.getContext('2d'); cxt.strokeStyle = ...

  5. linux挂载ntfs格式的硬盘

    发生了一件辣眼睛的操作,一个现场应用升级,由于跨度很大,不敢直接动,就把现场的数据库dump拿回来,在公司做写升级测试. 于是,联系现场的工程师把数据库dump导出来,放到网盘弄回来. ------- ...

  6. springboot 容器启动事件

    在springboot 容器启动时,我们需要在启动过程中做一些操作,比如启动容器后,执行某些代码. spring 提供了监听器,我们可以方便的实现这些操作. 在容器启动开始时: package com ...

  7. Codeforces Round #524 (Div. 2) F. Katya and Segments Sets(主席树)

    https://codeforces.com/contest/1080/problem/F 题意 有k个区间,区间的种类有n种,有m个询问(n,m<=1e5,k<=3e5),每次询问a,b ...

  8. Win7 VS2013环境编译Squirrel 3.0.7

    Squirrel是一个类似Lua,但是更面向对象的脚本语言. 国内这个介绍很少,环境配置更是没有任何文章提到,花了点时间搞定了,备忘记录下过程. 首先是下载,写本文时Squirrel最新版本为3.0. ...

  9. java常用设计模式总览

    一.java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组 ...

  10. Java编程从头开始---老妪能解

    思想导向: 今天想要分享的是最基础的东西就是如何写一个简单的代码,很多人都是小白,需要的其实并不是很高端的理论,框架和思维模式啊,设计方法啊,这些对于一个新人来说实在是好高骛远,说的那么高端,结果要学 ...