标题: [注册表类] [已解决]批处理增加环境变量path值时怎样判断是否已存在该值? [打印本页]
作者: deito 时间: 2011-5-3 16:11 标题: [已解决]批处理增加环境变量path值时怎样判断是否已存在该值?
- @echo off
- set ADDpath=D:\Siemens\swim\Origin_SWCustomer
- for,/f,"skip=4 tokens=1,2,*",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path'),do,(
- (
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%%c;%ADDpath%" /f
- )
- )
- exit
复制代码
上述代码可以将 D:\Siemens\swim\Origin_SWCustomer 增加到系统变量path中,但并不检查是否存在该值,求增加判断代码。
即 ,如果 第一个for语句 中的 %%c 的值包含 D:\Siemens\swim\Origin_SWCustomer ,则直接结束,不增加值!
四楼的代码成功的达到了目的,非常感谢!虽然还没弄明白 | 和 || 。
作者: applba 时间: 2011-5-3 18:05
这个delims要用的,然后与要添加的值一一对比,若不存在就追加
作者: yjstone 时间: 2011-5-3 18:39
本帖最后由 yjstone 于 2011-5-3 23:19 编辑
试试这个:- @echo off
- set "regpath=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment"
- call :setpath "D:\Siemens\swim\Origin_SWCustomer"
- :setpath
- if "%~$path:1"=="" reg add "%regpath%" /v Path /t REG_EXPAND_SZ /d "%path%;%1" /f
- pause&exit
复制代码
如果只是想增加的环境变量在批处理内一次生效可用如下代码:- @echo off
- call :setpath "D:\Siemens\swim\Origin_SWCustomer"
- :setpath
- if "%~$path:1"=="" path %path%;%1
- pause&exit
复制代码
作者: yjstone 时间: 2011-5-3 19:51
本帖最后由 yjstone 于 2011-5-3 20:56 编辑
或者用下面这个:- @echo off
- set regpath=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
- set ADDpath=D:\Siemens\swim\Origin_SWCustomer
- reg query "%regpath%" /v "Path"|find /i "%ADDpath%"||(reg add "%regpath%" /v Path /t REG_EXPAND_SZ /d "%path%;%ADDpath%" /f)
- pause
复制代码
作者: lovealei 时间: 2011-8-25 10:37
嘿嘿,上面的代码我用上了!!!! 感谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |