配置策略 一 系统环境变量自动配置脚本

0 使用系统环境变量来快速启动程序

由于强迫症,不喜在桌面放图标。于利用任务栏的地址栏工具与系统环境变量来启动应用程序。但是每次重装完系统要配置系统环境变量还是件麻烦事儿。尤其是需要等到所有必装软件安装完毕,还要等到像VS这种会将PATH中的变量引用展开的应用程序安装完后再去挨个添加环境变量。

1 用脚本

由于BAT属于初学,代码质量与效率还请见谅。

::*************************************************
::      系统环境变量配置脚本
::功能:根据指定的系统变量名与文件列表,以文件
::  列表中文件所在目录为值创建系统环境变量
::  ,并添加到PATH中
::条件:管理员权限
::备注:当前命令行中未生效,其他环境永久生效。
::作者:[email protected]
::日期:2016/10/19
::更新:[email protected]
::日期:2016/10/20
::未达成:1.PATH中对该变量的引用检测,由于CMD对%敏
::    感,可以动态生成VBS脚本用于检测
::    2.运行时发起管理员权限申请,考虑VBS
::*************************************************
::关闭回显
@echo off

::工作目录
SET DIR_WORK=%CD%

::数据目录
SET DIR_DATA=Data

::临时文件
SET FILE_TMP=%DIR_WORK%\%DIR_DATA%\tmp.dat

::备份文件
SET FILE_BACKUP=%DIR_WORK%\%DIR_DATA%\Environment.bak

::文件列表
SET APPLICATION=ApplyEnvironment.cmd boostmaster.exe QQ.exe QQMusic.exe and so on

::目标环境变量值
SET VALUE=

::目标环境变量名
SET TARGET=TEST

::检测或创建数据目录
IF NOT EXIST %DIR_WORK%\%DIR_DATA% MKDIR %DIR_WORK%\%DIR_DATA%

::备份PATH变量
WMIC ENVIRONMENT WHERE "name='Path' and username='<system>'" GET VariableValue 1>%FILE_BACKUP%

::检测TARGET是否已存在
WMIC ENVIRONMENT WHERE "name='%TARGET%' and username='<system>'" GET VariableValue 2>%FILE_TMP%

FOR /F "tokens=1" %%i in (%FILE_TMP%) do (

    IF '%%i' == 'No' GOTO CREATION

    IF NOT '%%i' == 'No' GOTO EXISTED
)

:CREATION

::获取所有的驱动器号到临时文件(我就固定那几个驱动器号,就没用这个了,直接用列表)
::WMIC LOGICALDISK WHERE "DriveType=3" Get Name >%FILE_TMP%

::遍历应用程序字符串、驱动器以获取所有路径
echo.>%FILE_TMP%

SETLOCAL ENABLEDELAYEDEXPANSION

FOR %%A in (%APPLICATION%) do (

        FOR %%D in (C: L: P: S:) do (

            ::进入驱动器
            %%D

            ::获取文件绝对路径
            dir /s /b %%A >>%FILE_TMP%  2>nul   
    )
)

::获取程序路径
FOR /F "delims=;" %%P in (%FILE_TMP%) do (

    ::去掉文件名
    SET TEMP=%%~dpP

    ::去掉最后的空格
    SET TEMP=!TEMP:~0,-1!

    ::保存到结果字符串
    SET VALUE=!VALUE!;!TEMP!

)
::删除临时文件
DEL %FILE_TMP%

::去除第一个;与添加最后的\
SET VALUE=%VALUE:~1%\

ENDLOCAL 
::在系统环境变量中创建目标
WMIC ENVIRONMENT create name="%TARGET%", username="<system>", VariableValue="%VALUE%"

::从备份中检测PATH中是否已存在该环境变量
:DETECT
::由于CMD对%敏感,可以考虑加入VBS来实现存在性检测
::创建VBS脚本
::调用VBS脚本
::删除VBS脚本
:EXISTED

GOTO ADDTIONAL

:ADDTIONAL

::构建目标PATH值
SET VALUE=%PATH%;%%%TARGET%%%;

::将新建环境变量添加到PATH
WMIC ENVIRONMENT WHERE "name='Path' and username='<system>'" SET VariableValue="%VALUE%"

:END

@echo on
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章