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

[网络连接] [代码征集]网站屏蔽批处理

大家都知道,利用hosts文件,可以达到屏蔽一些不受欢迎的网站.

代码要求:
1、能够添加需屏蔽的网站;
2、能够解除相应屏蔽的网站(最好可以显示已屏蔽的网站);

代码尽量简洁且配有解说;大家见仁见智,集思广益...

可能部分人不知道原理,
我先简单的说下
大家可以打开hosts文件看看(在C:\WINDOWS\system32\drivers\etc里面),如下
  1. # Copyright (c) 1993-1999 Microsoft Corp.
  2. #
  3. # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
  4. #
  5. # This file contains the mappings of IP addresses to host names. Each
  6. # entry should be kept on an individual line. The IP address should
  7. # be placed in the first column followed by the corresponding host name.
  8. # The IP address and the host name should be separated by at least one
  9. # space.
  10. #
  11. # Additionally, comments (such as these) may be inserted on individual
  12. # lines or following the machine name denoted by a '#' symbol.
  13. #
  14. # For example:
  15. #
  16. # 102.54.94.97 rhino.acme.com # source server
  17. # 38.25.63.10 x.acme.com # x client host
  18. 127.0.0.1 localhost
复制代码
只要在最后一行后面加上
127.0.0.1       你想屏蔽的网址    (注意:有7个空格)      
就打不开了(对原理感兴趣的自己BAIDU下)
下面是我写的
  1. @echo off&setlocal enabledelayedexpansion
  2. :kaishi
  3. echo.
  4. echo.
  5. echo.
  6. echo.
  7. echo 添加网址过滤请输入1;解除网址屏蔽请输入2;退出请按0;
  8. set /p scanf=
  9. if !scanf!==1 goto :pb else (
  10. if !scanf!==2 goto:jc else
  11. goto :end)
  12. :pb
  13. set /p str=请输入你想屏蔽的网址:
  14. echo 127.0.0.1 !str!>>C:\WINDOWS\system32\drivers\etc\hosts
  15. echo 网址!str!已经成功屏蔽!
  16. pause & cls & goto :kaishi
  17. :jc
  18. set /p str=请输入你想解除屏蔽的网址:
  19. for /f "delims=" %%a in (C:\WINDOWS\system32\drivers\etc\hosts) do echo %%a | findstr /v "!str!">>C:\WINDOWS\system32\drivers\etc\hosts1
  20. del C:\WINDOWS\system32\drivers\etc\hosts /q
  21. ren C:\WINDOWS\system32\drivers\etc\hosts1 hosts
  22. pause & cls & goto :kaishi
  23. :end
  24. exit
复制代码

[ 本帖最后由 novaa 于 2007-11-25 18:58 编辑 ]
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

哈哈
发现我写的好马虎
格式排版的也不好
本来想用CHOICE选择的,但是别人告诉,XP没有命令,。。。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

::知道这个原理就好办了。
::    但又要人性化,又要简洁,只怕有点难度。。。。
::         哈哈…… 代码 N 长…………

  1. @echo off&color 0f&title 网址 屏蔽/解除屏蔽
  2. :: by 小楼一夜听春雨 2007-11-25
  3. set wjm=C:\WINDOWS\system32\drivers\etc
  4. set "str=127.0.0.1       "&set "kg=                   "
  5. set "tisi=echo\&echo %kg%注: 此操作需要经过杀毒软件的同意。"
  6. set "tisi2=echo %kg%=================================="
  7. set "yip=以下是已经被屏蔽的网址&echo ======================&echo\"
  8. set "npb=目前没有被屏蔽的网址。&echo ======================&echo\&echo\&echo\"
  9. set "tisi=%tisi%&%tisi2%&echo\&echo\"
  10. :loop
  11. setlocal EnableDelayedExpansion
  12. call :xiansi
  13. echo\&echo 请选择 { 1 屏蔽网址 } { 2 解除屏蔽 } { 3 全部解除屏蔽 }&echo\
  14. set /p xuan=请选择 [ 1,2,3 ]
  15. if "%xuan%"=="" (set xuan=a) else set xuan=%xuan:"=%
  16. if "%xuan%"=="1" goto jia
  17. if "%xuan%"=="2" goto _jiecu
  18. if "%xuan%"=="3" set pinbi3=y&goto _jiecu
  19. call :cuowu
  20. endlocal
  21. goto loop
  22. :_jiecu
  23. cls&call :xiansi
  24. if defined pinbi3 (
  25.    for /l %%a in (1 1 %num%) do set wz=!wz! %%a
  26.    goto jiecu
  27. )
  28. echo\&echo 输入已经屏蔽的网址前面的序号,解除屏蔽相应的网址。
  29. echo\&echo 解除屏蔽,可一次输入多个序号,用空格分开。
  30. echo\&echo 如:1 2 5 10 (即:解除1、2、5、10)
  31. echo\&echo 按“回车键”或“点关闭按钮”退出。。。&echo\
  32. set /p wz=请输入序号:
  33. if "!wz!"=="" exit
  34. set pand=!wz: =!
  35. echo !pand!|findstr "^[0-9].*$"&&goto jiecu
  36. call :cuowu
  37. endlocal
  38. goto loop
  39. :jiecu
  40. attrib -r %wjm%\hosts
  41. color 1f
  42. for /f "delims=" %%a in (%wjm%\hosts) do (
  43.    set pin=
  44.    for %%i in (%wz%) do if "%%a"=="!str!!%%i!" set pin=a
  45.    if not defined pin echo %%a>>%wjm%\hosts1
  46. )
  47. set wz=&set "pinbi3="
  48. del/q %wjm%\hosts
  49. ren %wjm%\hosts1 hosts
  50. del/q %wjm%\hosts1
  51. attrib +r %wjm%\hosts
  52. cls&echo\&echo 解除屏蔽成功。。。
  53. endlocal
  54. goto loop
  55. :jia
  56. cls&%tisi%
  57. echo\&echo 请输入需要“屏蔽”的“单个”网址。
  58. echo\&echo 或 先在“某文档”里输入所有要屏蔽的网址,一行一个。
  59. echo\&echo 再在这里输入 “文档名” (含全路径和后缀名)
  60. echo\&echo 或将此文档拖放到此,可批量添加。
  61. echo\&echo 按“回车键”或“点关闭按钮”退出。。。&echo\
  62. set /p wdm=请输入文档名或网址:
  63. set wdm=%wdm:"=%
  64. if "%wdm%"=="" exit
  65. set wdm="%wdm%"
  66. if exist %wdm% (set "wdm=type %wdm%") else (set "wdm=echo %wdm%")
  67. attrib -r %wjm%\hosts
  68. for /f "delims=" %%a in ('%wdm%') do (
  69.    color cf&echo !str!%%a>>%wjm%\hosts
  70. )
  71. attrib +r %wjm%\hosts
  72. cls&echo\&echo 屏蔽成功。。。
  73. endlocal
  74. goto loop
  75. :xiansi
  76. set you=&set xs=&set num=
  77. for /f "tokens=1* delims= " %%a in (%wjm%\hosts) do (
  78.    if "%%a"=="127.0.0.1" set /a xs+=1
  79.    if !xs! geq 2 (
  80.      if !xs! equ 2  %tisi%&echo %yip%&set you=a
  81.      set /a num+=1
  82.      set !num!=%%b&echo ^(!num!^) %%b
  83. ))
  84. echo\
  85. if not defined you %tisi%&echo %npb%
  86. goto :eof
  87. :cuowu
  88. cls&echo\&echo  你的输入错误,请重新输入。。。&echo\
  89. goto :eof
复制代码

[ 本帖最后由 随风 于 2007-11-29 07:19 编辑 ]
2

评分人数

    • youxi01: PB + 6
    • novaa: 非常同意,功能全。好东西。PB + 4
技术问题请到论坛发帖求助!

TOP

N长,哈哈
不过人性化,
功能足
很不错的啊
向版主学习!
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

原帖由 随风 于 2007-11-25 23:22 发表
::知道这个原理就好办了。
::    但又要人性化,又要简洁,只怕有点难度。。。。
::         哈哈…… 代码 N 长…………
::@echo off&color 0f&title 网址 屏蔽/解除屏蔽
:: by 小楼一夜听春雨 2007-11-25
:lo ...


不错啊,加分鼓励.不过提点建议,标签或者封装的"函数"取名的时候最好是用英文好些,用中文的话,因为大多人采取的是拼音的方式,而且是简写的,所以到时可能会忘记标签原来的意义...

TOP

回复 6# 的帖子

你是说的 这个 “title 网址 屏蔽/解除屏蔽”  吗?
技术问题请到论坛发帖求助!

TOP

原帖由 随风 于 2007-11-26 15:06 发表
你是说的 这个 “title 网址 屏蔽/解除屏蔽”  吗?

里面的标签,如:jiec,:quan啊

TOP

哈哈 。。
那我就没办法了,除了26个字母,其它的我统统不认识。哈哈哈哈。。。。。
技术问题请到论坛发帖求助!

TOP

代码似乎还有点点问题,我解除屏蔽的时候,似乎解除不了啊

还有个问题,代码看起来似乎有点乱,排版不是很好看(呵呵,鸡蛋里挑骨头了,因为既然是代码征集,就是拿的出手的精品中的精品)

TOP

已经更新,这已经是最大努力了,
稍微作了些优化,和出错判断。
技术问题请到论坛发帖求助!

TOP

哈哈~~~
我来揭示一下你们又犯了什么错误~~~
1. 加到hosts 里的网站,是不是所谓的病毒、木马网站,色情、垃圾网站先
      是的话,就一点机会都不要给,也就是说,不需要提供解除了

2. 哦,你们以为人家加个屏蔽网站就要这么辛苦吖,加一个就要用那个批处理吖
      想想整个网络有多少个网站先,加这些东西自然是到各安全论坛里去要
      几千上万个屏蔽网站自然是别人帮你收集,你拿来用,靠你一个人,傻!
3.
  1. @echo off
  2. attrib -r %windir%\system32\drivers\etc\hosts && notepad.exe %windir%\system32\drivers\etc\hosts
  3. echo 编辑好hosts后保存,保存好后就在CMD窗口按回车即可
  4. pause>nul
  5. attrib +r %windir%\system32\drivers\etc\hosts
复制代码
4. 其实若中毒的话,人家要搞你的hosts,一样可以把你的hosts 删掉,只读又如何,人家改不了你的hosts就删掉,然后自己建一个hosts,并且这个hosts是你很难删掉的,牛吧
Software is like sex: it's better when it's free..!

TOP

原帖由 somebody 于 2007-11-29 13:51 发表
哈哈~~~
我来揭示一下你们又犯了什么错误~~~
1. 加到hosts 里的网站,是不是所谓的病毒、木马网站,色情、垃圾网站先
      是的话,就一点机会都不要给,也就是说,不需要提供解除了

2. 哦,你们以为人家加个 ...


真是一山还有一山高,在下真是甘拜下风。。。。

按楼上的说法,最好不要上网,因为没有任何东西能彻底的预防病毒,
    就好象一个人,怕噎死而不敢喝水一样,又好像认为吃过了早饭就不用吃晚饭了一样,因为反正还是会饿的!

[ 本帖最后由 随风 于 2007-11-29 16:01 编辑 ]
技术问题请到论坛发帖求助!

TOP

回复 13# 的帖子

有同感,站在巨人的面前
我们就是那一 弱智

TOP

晕啊
somebody应该知道,批处理作用是有限的!发挥了他的作用就足够了,何必还要说他不能怎么怎么的呢?
利用host是“一种“方法
利用批处理就能简化我们利用这种方法的
这就达到了批处理的目的了,
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

返回列表