关于wmic,引用一下这位哥们儿的话http://technet.microsoft.com/en-us/library/bb742610.aspx

WMIC扩展WMI(Windows Management Instrumentation,Windows管理规范),提供了从命令行接口和批命令脚本执行系统管理的支持。在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,例如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要用WMI管理系统是很困难的。WMIC改变了这种情况,为WMI名称空间提供了一个强大的、友好的命令行接口。WMIC比WMI简单、直观得多,这主要是由于使用了别名(Alias)。别名机制获取用户在命令行上输入的一些简单命令,按照预定义的方式操作WMI名称空间,例如根据一个简单的WMIC别名Get命令构造出一个复杂的WMI查询语言(WQL)命令。从这个意义上看,别名是用户和名称空间之间一个简化操作的中间层。

说一下wmic的命令格式:wmic+全局开关+别名+wql语句+动词+副词(或者说是动词的参数)+动词开关

详细情况请参考微软官方网站:http://technet.microsoft.com/zh-cn/library/cc779482(WS.10).aspx

理解多少,看你的悟性咯。理解了,这是个超强大的命令……

1:在系统变量的某个环境变量中增加一个新的路径:

先查看环境变量中的Path的值:

在命令提示符中输入命令:wmic environment where "name='Path'" get UserName,VariableValue

如下:

D:\PowerCmd\PowerCmd(绿色版)>wmic environment where "name='Path'" get UserName,VariableValue

查询结果如下:

UserName VariableValue

<SYSTEM> C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;d:\Program Files (x86)\Windows7Master;C:\sc

在Path中新增加环境变量C:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe

输入如下命令:

wmic environment where "name='Path' and UserName='<system>'" set VariableValue="%path%;C:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe"

然后输出:

Updating property(s) of '\\S69JQRRPHB8FBP1\ROOT\CIMV2:Win32_Environment.Name="Path",UserName="<SYSTEM>"'

Property(s) update successful.

表明修改正确!

然后再查询:

wmic environment where "name='Path'" get UserName,VariableValue

结果为:

UserName VariableValue

<SYSTEM> C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;d:\Program Files (x86)\Windows7Master;C:\sc;C:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe

2:在系统变量中创建一个环境变量:

设置:

D:\PowerCmd\PowerCmd(绿色版)>set home=C:\Program Files (x86)\PPLive\PPTV

wmic ENVIRONMENT create name="PPTV_HOME",username="<system>",VariableValue="%home%"

D:\PowerCmd\PowerCmd(绿色版)>Instance creation successful.

查询:

D:\PowerCmd\PowerCmd(绿色版)>wmic environment where "name='PPTV_HOME'" get UserName,VariableValue

UserName VariableValue

<SYSTEM> C:\Program Files (x86)\PPLive\PPTV

删除:

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT where "name='PPTV_HOME'" delete

Deleting instance \\S69JQRRPHB8FBP1\ROOT\CIMV2:Win32_Environment.Name="PPTV_HOME",UserName="<SYSTEM>"

Instance deletion successful.

再次查询:

D:\PowerCmd\PowerCmd(绿色版)>wmic environment where "name='PPTV_HOME'" get UserName,VariableValue

No Instance(s) Available.

注:上面创建的环境变量时也可以分为两步:

(1)D:\PowerCmd\PowerCmd(绿色版)>set home=C:\Program Files (x86)\PPLive\PPTV

(2)D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT create name="PPTV_HOME",username="<system>",VariableValue="%home%"

Instance creation successful.

3:好的,现在我们通过命令行来创建JAVA环境变量

set p home="C:\java\jdk"

wmic ENVIRONMENT where "name='JAVA_HOME'" delete

wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%home%"

wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;%Path%"

wmic ENVIRONMENT where "name='CLASSPATH'" delete

wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"

具体执行如下:

(1)先创建JAVA_HOME,我们不管原来电脑中有没有,先删除JAVA_HOME(考虑到假如有的话),然后再重新建立:

D:\PowerCmd\PowerCmd(绿色版)>set home="C:\java\jdk"

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT where "name='JAVA_HOME'" delete

No Instance(s) Available.

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%home%"

Instance creation successful.

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT where "name='JAVA_HOME'"

Caption Description InstallDate Name Status SystemVariable UserName VariableValue

<SYSTEM>\JAVA_HOME <SYSTEM>\JAVA_HOME JAVA_HOME OK TRUE <SYSTEM> C:\java\jdk

格式见下图:

(2)然后设置Path中的对应变量值,先解释一下,在set命令中的%%JAVA_HOME%%的双百分号,前一个和高级语言中的转义字符作用类似,也就是说

两个%%号表示路径中的一个%,而%JAVA_HOME%表示变量JAVA_HOME变量值,也就是我们已经设置的路径,还有一点需要注意的是最后的%Path%千万不可以

省略,否则将会删去原Path的所有值!%Path%不用多说了吧,表示原来的Path值,具体命令执行如下:

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;%Path%"

Updating property(s) of '\\S69JQRRPHB8FBP1\ROOT\CIMV2:Win32_Environment.Name="Path",UserName="<SYSTEM>"'

Property(s) update successful.

格式见下图:

(3)然后设置CLASSPATH变量对应的值,具体命令执行如下:

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT where "name='CLASSPATH'" delete

No Instance(s) Available.

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"

Instance creation successful.

D:\PowerCmd\PowerCmd(绿色版)>wmic ENVIRONMENT where "name='CLASSPATH'"

Caption Description InstallDate Name Status SystemVariable UserName VariableValue

<SYSTEM>\CLASSPATH <SYSTEM>\CLASSPATH CLASSPATH OK TRUE <SYSTEM> .;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar

格式见下图:

好的,我们用命令行解决了设置问题。

额……或许你该骂我了,什么玩意儿,这么麻烦,我还不如打开可视化界面一个个设置呢?别急,别急……

用批处理可以帮我们一次性完成这些繁琐的工作,你只需要写一次,然后无论是你重新装了系统,亦或是换了JDK的位置,你都不必再去麻烦,只需要

将制作成的批处理放在对应的JDK目录下,然后双击既可以了,是不是很帅气,嗯,我觉得还是蛮好玩儿的,那么看看怎么写吧:

首先最起码你得知道一点批处理的基本知识吧,如果不知道……自己就去网上查查吧……我在这儿说个主要的:

%~dp0

其中%~0代表批处理本身所在的绝对路径路径,中间的d代表扩展到驱动器(driver),p代表扩展到批处理的目录(path)不包括驱动器,均是就批处理本身所在位置而言的。

演示如下图(set.bat的文件在桌面,在我的电脑里其绝对路径为:C:\Users\Administrator\Desktop\set.bat):

在桌面上建立一个set.bat文件,内容可以用记事本编辑,看图(代码不多,自己敲一下吧)

输入后,双击运行,结果如下:

我就不在分析了,很明显的。

所以我们用%~0dp来代表批处理的所在的目录,因此你制作成的批处理务必要放在你的JDK目录下,比如你的jdk目录是c:\java\jdk,那么你就把这个批处理文件放到jdk文件夹下即可,那么这里的%~0dp便代表c:\java\jdk\

因此我们得到了所谓的home值,也就是JAVA_HOME的值。因此批处理文件书写如下:

代码如下(自带的代码配色太难看了,所以发张好看的截图……):

@echo off

echo Begin to set Java environment variable:

echo Please wait a moment......

echo %~dp0

wmic ENVIRONMENT where "name='JAVA_HOME'" delete

wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%~dp0"

wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;%Path%"

wmic ENVIRONMENT where "name='CLASSPATH'" delete

wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"

echo ---------------------------------------------------------------------

echo Done successfully!

echo You can get what done in your the dirctory of the [set.bat] !

echo ---------------------------------------------------------------------

wmic ENVIRONMENT where "name='JAVA_HOME'">%~dp0text.txt

wmic ENVIRONMENT where "name='Path'" >> %~dp0text.txt

wmic ENVIRONMENT where "name='CLASSPATH'">>%~dp0text.txt

pause

使用WMIC永久设置你的环境变量的更多相关文章

  1. 永久设置anaconda的环境变量

    安装anaconda后都显示install seccessful,可是输入anaconda 终端却显示“未找到命令” 原因是没有添加环境变量,按照如下方式将环境变量添加的安装路径下: emport P ...

  2. (转)Linux下设置和查看环境变量

    原文地址:<Linux下设置和查看环境变量> Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1. 永久的:需要修改配置文件,变量永久生效. 2. 临时的:使用e ...

  3. [整理]DLL延时加载 && 设置进程私有环境变量

    DLL延时加载鉴于静态和动态加载之间,即无需在代码中显示加载但它内队依然是动态加载的方式只是系统帮处理了.这样做好处是: 1. 可以加快启动时间(因为它是动态加载在需要的时间加载), 2. 减小编写L ...

  4. 【命令】Ubuntu设置和查看环境变量

    转自[Ubuntu]Ubuntu设置和查看环境变量 查看环境变量 env env命令是environment的缩写,用于列出所有的环境变量 export 单独使用export命令也可以像env列出所有 ...

  5. 【Ubuntu】Ubuntu设置和查看环境变量

    [Ubuntu]Ubuntu设置和查看环境变量    转载 https://blog.csdn.net/White_Idiot/article/details/78253004 1. 查看环境变量 查 ...

  6. bat-静默安装winrar并设置系统级环境变量

    @echo off Setlocal enabledelayedexpansion @REM vscode中自动开启延迟环境变量扩展 echo 安装winrar "winrar v.5.71 ...

  7. Linux下如何设置和查看环境变量

    Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1 永久的:需要修改配置文件,变量永久生效. 2 临时的:使用export命令声明即可,变量在关闭shell时失效. 按作用范 ...

  8. linux设置和查看环境变量的方法

    1.    显示环境变量HOME $ echo $HOME /home/redbooks 2.    设置一个新的环境变量hello $ export HELLO="Hello!" ...

  9. Linux设置和查看环境变量的方法 详解

    1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ ech ...

随机推荐

  1. OLAP如何实现数据的聚合计算-分析过程

  2. PHP过滤HTML标签的三种方法

    在做项目的过程中,我们经常需要用到过滤一些html标签来实现提高数据的安全性,其实就是删除那些对应用程序有潜在危害的数据.它用于去除标签以及删除或编码不需要的字符.首先分享一些比较常见的 $str=p ...

  3. The 2013 ACM-ICPC Asia Changsha Regional Contest - J

    Josephina and RPG Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge A role-playin ...

  4. 走出测试,走向CEO

    飞测说:大家好,我们又见面了,我是黑夜小怪.不巧,今晚加班回来路上,湿身了,淋了个落汤鸡,不过明天也许可以看海了,也就呵呵了,原本想回来后聊些技术的,现在突然想先聊聊我的一些想法,仅供交流. 走出测试 ...

  5. svn提交自动同步到web目录

    环境:CentOS6.5  测试线   svn和web服务器在同一台机器上   SVN版本1.6 情景:在测试环境下,开发部提出希望提交到SVN的代码能自动同步到WEB站点目录下,解决每次都要传双份这 ...

  6. <关于数据仓库>基于docker的Mysql与Hadoop/Hive之间的数据转移 (使用Apache Sqoop™)

    原创博客,转载请联系博主! 摘要:本文介绍了如何使用docker快速搭建一个可以从外部访问的mysql服务容器,和由docker搭建的分布式Hadoop文件系统,并且使用ApacheSqoop完成将m ...

  7. 火箭18号秀光膀为父母割草(FW)

    火箭18号秀光膀为父母割草 一夜致富不改本色 来源:新浪 2015年06月30日 分享到: 更多 收藏 分享 被浏览5次   <ignore_js_op id="r_article_i ...

  8. 关于BitmapFactory解析流的问题a

    今天碰到了一个超级恶心的问题,BitmapFactory.decodeStream(bis,null,options)一直是返回NULL 问题是这样子的: InputStream is= respon ...

  9. Leetcode005 Longest Palindromic Substring

    o(n)算法地址:http://blog.163.com/zhaohai_1988/blog/static/2095100852012716105847112/ /* pivot varies whe ...

  10. 百度地图API示例之小实践 添加代理商标注

    地图坐标无非是经度纬度. 每个代理商都有他的经度纬度参数,就能够在地图上标注出来了. 效果如下: 功能包括 标记代理商 显示导航 显示距离 测量距离 点击选中等 其中测距用到的是自定义控件 地图根据城 ...