Board logo

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

作者: Derekwong    时间: 2014-9-17 00:28     标题: 批处理怎样判断注册表中的键值是否存在,并根据判断做出动作?

要求:
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
复制代码

作者: Batcher    时间: 2014-9-17 11:16

  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. )
复制代码

作者: Derekwong    时间: 2014-9-17 12:53

本帖最后由 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的动作,麻烦管理员再看看。
作者: Derekwong    时间: 2014-9-17 13:06

再追问一个,这个BAT打开后一个小CMD窗口弹出,执行完就没了,有没有什么办法,让CMD窗口不显示,

如果可以麻烦一并加入到以上代码中,感谢管理员。
作者: Batcher    时间: 2014-9-17 13:41

回复 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
作者: Derekwong    时间: 2014-9-17 15:13

回复 5# Batcher


    谢谢管理员回复,这样写是不是无论信任站点在不在执行2个动作,先添加信任站点,再打开IE。
作者: Batcher    时间: 2014-9-17 15:34

回复 6# Derekwong


    是的。这样不符合你的需求吗?
作者: Derekwong    时间: 2014-9-18 08:42

回复 7# Batcher

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

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

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

麻烦管理员再修改一下,谢谢。
作者: Batcher    时间: 2014-9-18 12:28

回复 8# Derekwong


    5楼的代码就是这样执行的,你测试的时候发现问题了吗?
作者: Derekwong    时间: 2014-9-18 13:47

回复 9# Batcher


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

而且测试的时候没办法发现问题,因为运行出来的实际效果都是一样的。就是不知道过程怎么来测试。
作者: Batcher    时间: 2014-9-18 14:05

回复 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
作者: Derekwong    时间: 2014-9-18 14:26

回复 11# Batcher


    感谢管理员,这样测试是成功的,另外我想请教下,有没什么办法可以直接看到(或记录)BAT的整个运行过程。
作者: Batcher    时间: 2014-9-18 14:57

回复 12# Derekwong


    把11楼代码里面的 @echo off 删掉




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