windows 批处理设置环境变量
windows通过批处理设置环境变量
CreateTime--2017年8月4日11:28:11
Author:Marydon
参考链接:https://wenku.baidu.com/view/ae132fa103d276a20029bd64783e0912a2167c11.html
一、系统变量
1.添加系统变量
1.1 设置变量值为路径
举例:设置JAVA_HOME环境变量
方式一:变量值使用绝对路径
@echo off
:: 设置JDK环境变量JAVA_HOME
wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="D:\ProgramFiles(x86)\Java\jdk1.7.0_79"
echo %JAVA_HOME%
pause
方式二:变量值使用相对路径
@echo off
:: 设置JDK环境变量JAVA_HOME
wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%~dp0jdk1.7.0_79"
echo %JAVA_HOME%
pause
将上面代码复制到txt文件中,路径改成你的jdk安装路径,保存后,名称随意(如:JAVA_HOME),双击运行-->win+r-->输入sysdm.cpl-->高级-->环境变量-->在系统变量中即可看到
构成:
name用于指定环境变量名称,username用于指定环境变量的属性:临时变量/系统变量,VariableValue用于指定环境变量所对应的值,都是固定用法

区别:
方式一对于Java程序的安装路径的要求比较高,即变量值对应的值必须与Java的安装路径完全一致,但是对于该bat文件存放在哪个位置无关;
方式二的%~dp0表示批处理文件所在的文件夹的路径,即:D:\ProgramFiles(x86)\Java;
方式二对于Java程序的安装路径没有要求,但是对于该bat文件存放位置有很大要求,该bat文件存放在Java文件夹下,
所以JAVA_HOME="%~dp0jdk1.7.0_79",“%~dp0”和“jdk1.7.0_79”之间不用加“\”;

如果还是不明白,请自行百度绝对路径与相对路径的区别
1.2 设置变量值为死值
举例:设置PLSQL的环境变量NLS_CHARACTERSET和NLS_LANG
@echo off
:: 设置PLSQL的环境变量NLS_CHARACTERSET
wmic ENVIRONMENT create name="NLS_CHARACTERSET",username="<system>",VariableValue="AL32UTF8"
echo %NLS_CHARACTERSET%
:: 设置PLSQL的环境变量NLS_LANG
wmic ENVIRONMENT create name="NLS_LANG",username="<system>",VariableValue="AMERICAN_AMERICA.AL32UTF8"
echo %NLS_LANG%
pause
保存成bat文件后,双击运行即可。

2.删除环境变量
@echo off
:: 删除JDK环境变量JAVA_HOME
wmic ENVIRONMENT where name="JAVA_HOME" delete
pause

3.修改环境变量
@echo off
:: 更新环境变量JAVA_HOME的值
wmic ENVIRONMENT where "name='JAVA_HOME' and username='<system>'" set VariableValue="test"
echo %JAVA_HOME%
pause

注意:
where 关键字后跟的参数必须是一个连续的字符串,如果参数字符串含有空格需要用英文双引号 " 将参数括起来;
若字符串中有多个限定词,比如既有 name 又有 username,则需要使用 and 关键字来连接这些限定词。
二、临时变量
1.添加临时变量
set password=123
将其保存成bat文件后,双击运行即可

说明:临时变量只在当前窗口有效,一旦关闭,就会消失
三、结语
1.使用 wmic 命令修改环境变量是永久性的,而使用 set 命令修改环境变量是只针对当前命令行环境的临时修改;
2.pause-->终止命令执行,不关闭窗口(可以查看执行结果);exit-->终止命令执行并关闭执行窗口;
3.查看环境变量通常通过DOS窗口通过set +变量名称查看;
4.使用批处理改变环境变量,需要重启资源管理器或注销或重启后才能生效;
5.与其配置JAVA_HOME环境变量,再将其配置到Path中,不如直接在Path添加jdk的环境(编译&运行)
错误方式:在path最前面添加配置
@echo off
:: 在Path最前面添加JDK环境(编译&运行)
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%~dp0jdk1.7.0_79\bin;%path%"
echo %path%
pause
打开进入命令窗口,输入set path,重启前:

重启资源管理器后结果展示:
解说:
如图所示,通过命令的方式实现在Path最前面添加内容虽然实现了,但是会添加两次,因此不推荐使用,想要实现,需要到环境变量管理中手动进行配置
正确方式:在path最后面添加配置
最佳方式:在path最后面添加配置并重启资源管理器
@echo off
:: 在Path最前面添加JDK环境(编译&运行)
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;%~dp0jdk1.7.0_79\bin"
echo %path%
:: 重启资源管理器
taskkill /f /im explorer.exe
start explorer.exe
exit
效果展示:


windows 批处理设置环境变量的更多相关文章
- 在Windows下设置环境变量 运行mysql程序变得更容易
在Windows下设置环境变量,点开始菜单,右键单击我的电脑--属性--高级--环境变量 可以看到PATH的变量是这样的: C:\WINDOWS;C:\WINDOWS\COMMAND 为了让运行m ...
- linux和windows中设置环境变量经常使用命令
Linux和Windows下查看环境变量方法 一.查看全部环境变量的名称和值: Linux下:export Windows下:set 二.依据名称查该环境变量的值: Linux下:echo $环境变量 ...
- Windows一键设置环境变量(以设置java环境变量为例)
右击以管理员方式运行 JDKSetting.bat @echo off color 0a echo.------------------------------------ echo.TODO:设 ...
- windows下使用批处理设置环境变量
1. 设置临时环境变量 set BAT_HOME=c:\bat 此命令只对当前窗口有效,批处理或cmd窗口一关闭,变量就恢复原来的值了. 2. 设置永久环境变量 方法一 setx BAT_HOME C ...
- Linux/windows查看设置环境变量指令
一.Linux: 1.查看所有环境变量的指令 方法1:$:export (export命令作用是显示.设置或删除linux环境变量:) 方法2:$:env 2.查看某个指定的环境变量 方法1:$:ex ...
- MySQL在Windows中设置环境变量
在桌面选择“计算机”的图标(或者是我的电脑),右键-->属性-->点击“高级系统设置” 然后选择 高级 选项点击环境变量 然后点击新建-> 变量名为MYSQL_HOME 变量值为m ...
- Linux程序写入oralce数据库中文显示为问号??? 代码实现设置环境变量!
Linux程序写入oralce数据库中文显示为问号??? 1.问题介绍 根本原因是字符集的问题,是数据库的字符集和写入程序的linux系统的字符集不一致导致: 但是用export NLS_LANG=& ...
- 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样
在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": { "publish- ...
- Linux和Windows下查看、设置环境变量的比较
[一]查看环境变量: 1.windows 查看所有的变量:set 范例:>set 查看某个变量的值:set 环境变量名 范例: >set JAVA_HOME ...
随机推荐
- PHP-输入变量
在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了. ...
- leetcode第一刷_Restore IP Addresses
字符串的问题真是难.一般递归比較好写代码,一般地归还会超时,并且測试用例特别多.. 这道题刚拿到手时直接慌了,这情况也太多了.后来冷静下来想想,事实上还是比較单纯的. 一个ip地址,肯定是四个整数加三 ...
- C#程序集系列10,强名称程序集
当一个程序集的名称,版本,文化,Public Key都做了设置,就可以把这个程序集叫做"强名称程序集".强名称程序集可以防止被仿冒或篡改.本篇首先创建一个强名称程序集,接着模拟篡改 ...
- 再次理解多线程线程安全问题(理解java内存模型后)
1.多线程访问的共享资源存在线程安全问题, 无外乎访问两种共享资源. 1)多线程访问方法区数据.存在线程安全问题,通过加锁 2)多线程访问实例变量:被访问对象是单例时存在线程安全,被访问对象是多例时, ...
- windows下androidNDK环境配置
一:什么是NDK? NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和java 应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK 集成了交叉编译器, ...
- 编码原则:必须使用的 TODO
结构 // TODO:JS ParentId 不要使用硬编码. var parentId = record.get('ParentId'); var parentNode = me.getStore( ...
- table固定首行(二)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- synchronized与lock,哪个效率更高
Java在一开始就提供了synchronized关键字,用于多线程之间的同步.它使用简便,不会出现拿锁之后不归还的情况,可以避免一些编程错误. 而jdk5时提供的concurrent包里,有一个Loc ...
- OpenShift上部署Redis主从集群
客户有部署有状态服务的需求,单机部署模式相对简单,尝试一下集群部署. 关于Redis的master,slave 以及sentinal的架构和作用不提,有兴趣可以参考之前的博客 https://www. ...
- jenkins error: "no valid crumb was included in the request"
一.问题描述(Problem Description): 在jenkins中创建新任务时候选择“拷贝已存在任务”,点击OK,跳转到下一步时候弹出如下错误信息:"No valid crumb ...