找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 40121|回复: 12

[注册表类] 批处理怎样判断注册表中的键值是否存在,并根据判断做出动作?

[复制链接]
发表于 2014-9-17 00:28:25 | 显示全部楼层 |阅读模式
要求:
1、判断注册表中的网站信任站点中是否包含abc.com
2、如果包含,直接打开IE,abc.com
3、如果不包含,将该网站添加进信任列表,再打开abc.com.

网站信任站点在注册表中对应的地方是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains

------------------------------------------------------------------------------------------------------------------------------------------------------------
//因不懂BAT,所以在网站找了很多帖子看了,自己摸索着写了一个,但有时会同时打开2个IE,也感觉代码很乱,请高手帮忙优化,非常感谢。
  1. reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http |findstr "http" &&start "" /min  "%systemdrive%\program files\internet explorer\iexplore.exe"    abc.com ||rem 添加www.abc.com为信任站点
  2. reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\www" /v http /t REG_DWORD /d 0x00000002 /f

  3. rem 添加oa.abc.com为信任站点
  4. reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\oa" /v http /t REG_DWORD /d 0x00000002 /f  

  5. rem 添加*.abc.com为信任站点
  6. reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http /t REG_DWORD /d 0x00000002 /f   

  7. start "" /min  "%systemdrive%\program files\internet explorer\iexplore.exe"    abc.com
复制代码
发表于 2014-9-17 11:16:30 | 显示全部楼层
  1. reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http
  2. if errorlevel 1 (
  3.     rem 添加www.abc.com为信任站点
  4.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\www" /v http /t REG_DWORD /d 2 /f
  5.     rem 添加oa.abc.com为信任站点
  6.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\oa" /v http /t REG_DWORD /d 2 /f
  7.     rem 添加*.abc.com为信任站点
  8.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http /t REG_DWORD /d 2 /f
  9. ) else (
  10.     start "" /min "%systemdrive%\program files\internet explorer\iexplore.exe" abc.com
  11. )
复制代码
 楼主| 发表于 2014-9-17 12:53:04 | 显示全部楼层
本帖最后由 Derekwong 于 2014-9-17 13:01 编辑

回复 2# Batcher


    谢谢管理员,你的代码很好,结果测试发现还有一个问题没有解决,就是:

当信任站点中没有abc.com时,要做的动作是2个:
1、添加abc.com到信任站点
2、添加完后,再打开abc.com。

管理员给的代码,缺少第2个动作,我尝试直接把 start "" /min "%systemdrive%\program files\internet explorer\iexplore.exe" 127.0.0.1 加到第一部分的后面,如下:
  1. reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http
  2. if errorlevel 1 (
  3.     rem 添加www.abc.com为信任站点
  4.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\www" /v http /t REG_DWORD /d 2 /f
  5.     rem 添加oa.abc.com为信任站点
  6.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\oa" /v http /t REG_DWORD /d 2 /f
  7.     rem 添加*.abc.com为信任站点
  8.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http /t REG_DWORD /d 2 /f
  9.     start "" /min "%systemdrive%\program files\internet explorer\iexplore.exe" abc.com
  10. ) else (
  11.     start "" /min "%systemdrive%\program files\internet explorer\iexplore.exe" abc.com
  12. )
复制代码
这样加完还是不成功,在没有信任站点的时候,执行了添加动作,但添加完后,没有执行打开IE的动作,麻烦管理员再看看。
 楼主| 发表于 2014-9-17 13:06:55 | 显示全部楼层
再追问一个,这个BAT打开后一个小CMD窗口弹出,执行完就没了,有没有什么办法,让CMD窗口不显示,

如果可以麻烦一并加入到以上代码中,感谢管理员。
发表于 2014-9-17 13:41:34 | 显示全部楼层
回复 3# Derekwong
  1. reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http
  2. if errorlevel 1 (
  3.     rem 添加www.abc.com为信任站点
  4.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\www" /v http /t REG_DWORD /d 2 /f
  5.     rem 添加oa.abc.com为信任站点
  6.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\oa" /v http /t REG_DWORD /d 2 /f
  7.     rem 添加*.abc.com为信任站点
  8.     reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http /t REG_DWORD /d 2 /f
  9. )
  10. start "" /min "%systemdrive%\program files\internet explorer\iexplore.exe" abc.com
复制代码
把代码保存为test.bat
不要用reg.bat或start.bat
 楼主| 发表于 2014-9-17 15:13:26 | 显示全部楼层
回复 5# Batcher


    谢谢管理员回复,这样写是不是无论信任站点在不在执行2个动作,先添加信任站点,再打开IE。
发表于 2014-9-17 15:34:24 | 显示全部楼层
回复 6# Derekwong


    是的。这样不符合你的需求吗?
 楼主| 发表于 2014-9-18 08:42:50 | 显示全部楼层
回复 7# Batcher

是的,跟我的需求有点不同,我的需求是:

A:如果信任站点已存在,就直接打开网站(不用再添加信任站点)。

B:如果信任站点不存在,那么先添加信任站点,再打开网站

麻烦管理员再修改一下,谢谢。
发表于 2014-9-18 12:28:10 | 显示全部楼层
回复 8# Derekwong


    5楼的代码就是这样执行的,你测试的时候发现问题了吗?
 楼主| 发表于 2014-9-18 13:47:14 | 显示全部楼层
回复 9# Batcher


    感谢管理员的回复,因为我只看到一个IF判断,所以我以为只是做了一次判断。

而且测试的时候没办法发现问题,因为运行出来的实际效果都是一样的。就是不知道过程怎么来测试。
发表于 2014-9-18 14:05:45 | 显示全部楼层
回复 10# Derekwong


这样测试一下看看

@echo off
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http
if errorlevel 1 (
    echo 信任站点不存在,先添加信任站点;如果没有看到这个提示,那就是直接打开网站(不用再添加信任站点)
    rem 添加www.abc.com为信任站点
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\www" /v http /t REG_DWORD /d 2 /f
    rem 添加oa.abc.com为信任站点
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com\oa" /v http /t REG_DWORD /d 2 /f
    rem 添加*.abc.com为信任站点
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\abc.com" /v http /t REG_DWORD /d 2 /f
)
start "" /min "%systemdrive%\program files\internet explorer\iexplore.exe" abc.com
pause
 楼主| 发表于 2014-9-18 14:26:55 | 显示全部楼层
回复 11# Batcher


    感谢管理员,这样测试是成功的,另外我想请教下,有没什么办法可以直接看到(或记录)BAT的整个运行过程。
发表于 2014-9-18 14:57:52 | 显示全部楼层
回复 12# Derekwong


    把11楼代码里面的 @echo off 删掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 02:21 , Processed in 0.015910 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表