zoukankan      html  css  js  c++  java
  • 使用WMIC永久设置你的环境变量

    关于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:PowerCmdPowerCmd(绿色版)>wmic environment where "name='Path'" get UserName,VariableValue

    查询结果如下:

    UserName VariableValue

    <SYSTEM> C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;d:Program Files (x86)Windows7Master;C:sc

    在Path中新增加环境变量C:Program Files (x86)TencentQQBinQQ.exe

    输入如下命令:

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

    然后输出:

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

    Property(s) update successful.

    表明修改正确!

    然后再查询:

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

    结果为:

    UserName VariableValue

    <SYSTEM> C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;d:Program Files (x86)Windows7Master;C:sc;C:Program Files (x86)TencentQQBinQQ.exe

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

    设置:

    D:PowerCmdPowerCmd(绿色版)>set home=C:Program Files (x86)PPLivePPTV

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

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

    查询:

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

    UserName VariableValue

    <SYSTEM> C:Program Files (x86)PPLivePPTV

    删除:

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

    Deleting instance \S69JQRRPHB8FBP1ROOTCIMV2:Win32_Environment.Name="PPTV_HOME",UserName="<SYSTEM>"

    Instance deletion successful.

    再次查询:

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

    No Instance(s) Available.

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

    (1)D:PowerCmdPowerCmd(绿色版)>set home=C:Program Files (x86)PPLivePPTV

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

    Instance creation successful.

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

    set p home="C:javajdk"

    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%%in;%%JAVA_HOME%%jrein;%Path%"

    wmic ENVIRONMENT where "name='CLASSPATH'" delete

    wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%lib ools.jar;%%JAVA_HOME%%libdt.jar;%%JAVA_HOME%%jrelib t.jar"

    具体执行如下:

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

    D:PowerCmdPowerCmd(绿色版)>set home="C:javajdk"

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

    No Instance(s) Available.

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

    Instance creation successful.

    D:PowerCmdPowerCmd(绿色版)>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:javajdk

    格式见下图:

    clip_image001

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

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

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

    D:PowerCmdPowerCmd(绿色版)>wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%%JAVA_HOME%%in;%%JAVA_HOME%%jrein;%Path%"

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

    Property(s) update successful.

    格式见下图:

    clip_image002

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

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

    No Instance(s) Available.

    D:PowerCmdPowerCmd(绿色版)>wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%lib ools.jar;%%JAVA_HOME%%libdt.jar;%%JAVA_HOME%%jrelib t.jar"

    Instance creation successful.

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

    Caption Description InstallDate Name Status SystemVariable UserName VariableValue

    <SYSTEM>CLASSPATH <SYSTEM>CLASSPATH CLASSPATH OK TRUE <SYSTEM> .;%%JAVA_HOME%%lib ools.jar;%%JAVA_HOME%%libdt.jar;%%JAVA_HOME%%jrelib t.jar

    格式见下图:

    clip_image003

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

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

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

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

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

    %~dp0

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

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

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

    clip_image004

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

    clip_image005

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

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

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

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

    clip_image006

    @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%%in;%%JAVA_HOME%%jrein;%Path%"

    wmic ENVIRONMENT where "name='CLASSPATH'" delete

    wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%lib ools.jar;%%JAVA_HOME%%libdt.jar;%%JAVA_HOME%%jrelib t.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


    作者:KillerLegend
    出处:http://www.cnblogs.com/KillerLegend/
    分享最新的资源,分享个人所得,欢迎关注我的新浪微博
    新浪微博主页:ikey4u
    我的个人博客:www.ikey4u.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    C# 操作配置文件
    C# Excel操作类
    没有找到 mspdb100.dll 的解决办法
    工厂方法模式
    .Net互操作2
    The certificate used to sign “AppName” has either expired or has been revoked. An updated certificate is required to sign and install the application解决
    手机抓包xcode自带命令行工具配合wireshark实现
    expecting SSH2_MSG_KEX_ECDH_REPLY ssh_dispatch_run_fatal问题解决
    使用ssh-keygen设置ssh无密码登录
    远程复制文件到服务器
  • 原文地址:https://www.cnblogs.com/killerlegend/p/3405484.html
Copyright © 2011-2022 走看看