在cmd命令行下使用wmic永久修改Windows环境变量

【背景说明】

        Windows 系统中,有时为了让我们安装的某些软件能正常执行,比如 JavaJDK 或 Git 等,需要向环境变量中添加和软件相关的值;有时我们自己写了一些脚本或小程序,希望能在任意路径下进行调用执行,也需要将这些脚本的所在路径添加到 PATH 环境变量中。我们当然可以在 “系统属性-->高级系统设置-->环境变量” 中使用图形界面进行添加,但这找起来很繁琐,也无法实现自动化添加的环境变量的操作。

        好在 Windows 提供了 wmic 命令工具,我们可以使用她来将创建、添加环境变量的工作写入脚本中自动执行。为了实现这个效果我们需要以管理员权限启动脚本,关于如何在 cmd 命令行环境获取管理员权限,可以参考我之前写的《在Windows中实现sudo命令——命令行环境中获取管理员权限》这篇文章。

        使用 wmic 命令与使用 set 命令来修改环境变量的区别是,使用 wmic 命令修改环境变量是永久性的,而使用 set 命令修改环境变量是只针对当前命令行环境的临时修改



【脚本语法】

:: 获取 PATH 环境变量的 用户 和 变量值
wmic ENVIRONMENT where name="PATH" get UserName,VariableValue 

    在cmd命令行下使用wmic永久修改Windows环境变量_第1张图片


:: 修改 OS 环境变量值为 Windows_NT,这会覆盖掉原有的变量值
wmic ENVIRONMENT where name="os" set VariableValue="Windows_NT" 

    在cmd命令行下使用wmic永久修改Windows环境变量_第2张图片

:: 修改 PATH 环境变量值,新增路径 T:\myScripts
wmic ENVIRONMENT where "name='PATH' and username=''" set VariableValue="%PATH%;T:\myScripts" 


:: 新增系统环境变量 myTemp,值为 %OS%%SystemDrive% 
wmic ENVIRONMENT create name="myTemp",username="",VariableValue="%OS%%SystemDrive% " 

:: 删除 myTemp 环境变量 
wmic ENVIRONMENT where "name='myTemp'" delete



【注意事项】

        1、 where 关键字后跟的参数必须是一个连续的字符串,如果参数字符串含有空格需要用英文双引号 " 将参数括起来;若字符串中有多个限定词,比如既有 name 又有 username,则需要使用 and 关键字来连接这些限定词。

        2、在读取环境变量值时不需要管理员权限,但在创建、写入环境变量值时必须具备管理员权限。


【源码】

' fso判断环境变量添加脚本是否存在
Set fso = CreateObject("Scripting.FileSystemObject")
' 以管理员权限运行环境变量添加脚本
Set UAC = CreateObject("Shell.Application")
tmpFile = ".\addToPath.bat"
If fso.FileExists(tmpFile) Then
    UAC.ShellExecute ".\addToPath.bat", "", "", "runas", 1
Else
    ' 文件缺失,生成环境变量添加脚本
    Set batFile = fso.CreateTextFile(".\addToPath.bat", True)
    batFile.WriteLine("@echo off")
    batFile.WriteLine(":: 获取当前文件夹绝对路径")
    batFile.WriteLine("set tmpDir=%~dp0")
    batFile.WriteLine("wmic ENVIRONMENT where " & chr(34) & "name='PATH' and username=''" & chr(34) & " set VariableValue=" & chr(34) & "%tmpDir%;%PATH%" & chr(34))
    UAC.ShellExecute ".\addToPath.bat", "", "", "runas", 1
End If
MsgBox "已将当前路径添加到环境变量PATH中", vbOkOnly+vbInformation,"操作完成"

【效果】

        新建一个文本文件,将上面代码复制粘贴到文件中,并重命名文本文件为 addToPath.vbs (注意后缀改成了 .vbs)。然后直接双击 addToPath.vbs 运行即可将该文件所在文件夹的路径自动添加到 PATH 环境变量中。

        如果我们拥有很多自动化脚本(可以是自己写的或搜集而来),可以将她们和 addToPath.vbs 一起打包成一个压缩文件上传到网盘中。这样即便我们在使用一台新的电脑时也能快速部署和使用这些得心应手的工具了



你可能感兴趣的:(hack,脚本)