[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] [已解决]批处理增加环境变量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 ,则直接结束,不增加值!

四楼的代码成功的达到了目的,非常感谢!虽然还没弄明白 | 和 || 。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

这个delims要用的,然后与要添加的值一一对比,若不存在就追加

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

本帖最后由 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
复制代码

TOP

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

TOP

返回列表