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