批处理解决环境变量的问题

 

http://www.cn-dos.net/forum/viewthread.php?tid=44462

前一段时间我一直为如果在新增环境变量而苦恼。因为不想每次都是通过“我的电脑”-“属性”来增加“环境变量”。因为不是每个人都懂怎么做,尤其对于一些对计算机不是很懂的人。
起先我想到的是用注册表来实现。先将增加环境变量的地方导出来,然后通过命令C:\WINDOWS\regedit /s Environment.reg 来导入注册表。
但是这个方法比较笨。今天终于知道了一个简单的办法。通过WMIC,只需要一条命令就可以了。

比如添加一个环境变量:
wmic ENVIRONMENT create name="ORACLE_HOME",VariableValue="C:\ORACLE"

ENVIRONMENT – 系统环境设置管理

  1. ::获取temp环境变量  
  2. wmic ENVIRONMENT where "name=’temp’" get UserName,VariableValue  
  3. ::更改path环境变量值,新增e:\tools  
  4. wmic ENVIRONMENT where "name=’path’ and username='<system>’" set VariableValue="%path%;e:\tools"  
  5. ::新增系统环境变量home,值为%HOMEDRIVE%%HOMEPATH%   
  6. wmic ENVIRONMENT create name="home",username="<system>",VariableValue="%HOMEDRIVE%%HOMEPATH%"  
  7. ::删除home环境变量  
  8. wmic ENVIRONMENT where "name=’home’" delete  

一般来说,wmic创建或修改的系统变量不用重启windows生效,但如果你发现在DOS窗下检测不生效的话,你试着关闭 DOS窗,再检测一次.就生效了.

如果你的批处理想不关闭而直接让新的变量给下级程序应用可以这样写

 

  1. ::检查path中有没有e:\tools(有就跳到run,没有就接着执行)  
  2. echo %path%|findstr /i "e:\tools"&&(goto run)  
  3.   
  4. ::先添加,防止没有时修改出错  
  5. wmic ENVIRONMENT create name="path",VariableValue="e:\tools;%path%"  
  6. ::再修改,防止已有时添加出错  
  7. wmic ENVIRONMENT where "name=’path’ and username='<system>’" set VariableValue="e:\tools;%path%"  
  8. ::再即时应用  
  9. set "path=e:\tools;%path%"  
  10.   
  11. :run  
  12. start 程序.exe  

第三方工具可以使用Windows2003系统下的Setx.exe

命令行使用:setx 参数 值 -m

setx path "C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem" -m

不用重启应用环境变量,免重启,即时环境变量,修改环境变量,添加环境变量,系统环境向下传递,即时应用,免重启的方法





发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>