Board logo

标题: [注册表类] [已解决]批处理增加环境变量path值时怎样判断是否已存在该值? [打印本页]

作者: deito    时间: 2011-5-3 16:11     标题: [已解决]批处理增加环境变量path值时怎样判断是否已存在该值?

  1. @echo off
  2. set  ADDpath=D:\Siemens\swim\Origin_SWCustomer
  3. for,/f,"skip=4 tokens=1,2,*",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path'),do,(
  4.        (
  5.                 reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%%c;%ADDpath%" /f
  6.                 )
  7. )
  8. 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 编辑

试试这个:
  1. @echo off
  2. set "regpath=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment"
  3. call :setpath "D:\Siemens\swim\Origin_SWCustomer"
  4. :setpath
  5. if "%~$path:1"=="" reg add "%regpath%" /v Path /t REG_EXPAND_SZ /d "%path%;%1" /f
  6. pause&exit
复制代码
如果只是想增加的环境变量在批处理内一次生效可用如下代码:
  1. @echo off
  2. call :setpath "D:\Siemens\swim\Origin_SWCustomer"
  3. :setpath
  4. if "%~$path:1"=="" path %path%;%1
  5. pause&exit
复制代码

作者: yjstone    时间: 2011-5-3 19:51

本帖最后由 yjstone 于 2011-5-3 20:56 编辑

或者用下面这个:
  1. @echo off
  2. set regpath=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
  3. set ADDpath=D:\Siemens\swim\Origin_SWCustomer
  4. reg query "%regpath%" /v "Path"|find /i "%ADDpath%"||(reg add "%regpath%" /v Path /t REG_EXPAND_SZ /d "%path%;%ADDpath%" /f)
  5. pause
复制代码

作者: lovealei    时间: 2011-8-25 10:37

嘿嘿,上面的代码我用上了!!!! 感谢!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2