本帖最后由 aa77dd@163.com 于 2015-7-20 13:31 编辑
回复 1# 不知名
当前 cmd 进程的 path 是不会自动更新的, 打开新的 cmd 进程 才会加载 path 的新值, 或者用 wmic 获取实时的新值
wmic 的输出中有 不可见字符, 有些地方需要对它们做必要的处理
以下代码 在 win7 旗舰版 sp1 64位 及 win 2003 企业版 sp2 测试通过- @echo off & setlocal enableDelayedExpansion
- mode 160
-
- echo view current PATH value:
- wmic ENVIRONMENT where "name='path' and username='<SYSTEM>'" get VariableValue
-
- set "newpath=C:\Program Files\MySQL\MySQL Server 5.5\bin;%%RUNHOME%%\dll"
- set newpath
- wmic ENVIRONMENT where "name='path' and username='<SYSTEM>'" get VariableValue | findstr /I /C:"%newpath%" >nul && (ECHO The newpath value already be included) || (call :update)
-
- echo; &echo;
-
- pause
- exit
-
-
- :update
- for /f "skip=1 tokens=*" %%a in ('wmic ENVIRONMENT where "name='path' and username='<SYSTEM>'" get VariableValue') do (
-
- for /f "delims=" %%b in ("%%a") do (
- set pth=%%~b
-
- set "pp=!pth!;!newpath!"
-
- set "pp=!pp: ;=;!"
-
- echo, & echo The value will update to PATH: & echo [!pp!] & echo; & echo;
-
- wmic ENVIRONMENT where "name='path' and username='<SYSTEM>'" set VariableValue='!pp!'
-
- echo; & echo;
-
- wmic ENVIRONMENT where "name='path' and username='<SYSTEM>'" get VariableValue
- )
-
- echo; & echo;
- )
- exit /b
复制代码
|