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

@echo off&color 0f&title 网址 屏蔽/解除屏蔽
:: by 小楼一夜听春雨 2007-11-25
set wjm=C:\WINDOWS\system32\drivers\etc
set "str=127.0.0.1       "&set "kg=                   "
set "tisi=echo\&echo %kg%注: 此操作需要经过杀毒软件的同意。"
set "tisi2=echo %kg%=================================="
set "yip=以下是已经被屏蔽的网址&echo ======================&echo\"
set "npb=目前没有被屏蔽的网址。&echo ======================&echo\&echo\&echo\"
set "tisi=%tisi%&%tisi2%&echo\&echo\"
:loop
setlocal EnableDelayedExpansion
call :xiansi
echo\&echo 请选择 { 1 屏蔽网址 } { 2 解除屏蔽 } { 3 全部解除屏蔽 }&echo\
set /p xuan=请选择 [ 123 ]
if "%xuan%"=="" (set xuan=a) else set xuan=%xuan:"=%
if "%xuan%"=="1" goto jia
if "%xuan%"=="2" goto _jiecu
if "%xuan%"=="3" set pinbi3=y&goto _jiecu
call :cuowu
endlocal
goto loop
:_jiecu
cls&call :xiansi
if defined pinbi3 (
   for /l %%a in (1 1 %num%) do set wz=!wz! %%a
   goto jiecu
)
echo\&echo 输入已经屏蔽的网址前面的序号,解除屏蔽相应的网址。
echo\&echo 解除屏蔽,可一次输入多个序号,用空格分开。
echo\&echo 如:1 2 5 10 (即:解除12510
echo\&echo 按“回车键”或“点关闭按钮”退出。。。&echo\
set /p wz=请输入序号:
if "!wz!"=="" exit
set pand=!wz: =!
echo !pand!|findstr "^[0-9].*$"&&goto jiecu
call :cuowu
endlocal
goto loop
:jiecu
attrib -r %wjm%\hosts
color 1f
for /f "delims=" %%a in (%wjm%\hosts) do (
   set pin=
   for %%i in (%wz%) do if "%%a"=="!str!!%%i!" set pin=a
   if not defined pin echo %%a>>%wjm%\hosts1
)
set wz=&set "pinbi3="
del/q %wjm%\hosts
ren %wjm%\hosts1 hosts
del/q %wjm%\hosts1
attrib +r %wjm%\hosts
cls&echo\&echo 解除屏蔽成功。。。
endlocal
goto loop
:jia
cls&%tisi%
echo\&echo 请输入需要“屏蔽”的“单个”网址。
echo\&echo 或 先在“某文档”里输入所有要屏蔽的网址,一行一个。
echo\&echo 再在这里输入 “文档名” (含全路径和后缀名)
echo\&echo 或将此文档拖放到此,可批量添加。
echo\&echo 按“回车键”或“点关闭按钮”退出。。。&echo\
set /p wdm=请输入文档名或网址:
set wdm=%wdm:"=%
if "%wdm%"=="" exit
set wdm="%wdm%"
if exist %wdm% (set "wdm=type %wdm%") else (set "wdm=echo %wdm%")
attrib -r %wjm%\hosts
for /f "delims=" %%a in ('%wdm%') do (
   color cf&echo !str!%%a>>%wjm%\hosts
)
attrib +r %wjm%\hosts
cls&echo\&echo 屏蔽成功。。。
endlocal
goto loop
:xiansi
set you=&set xs=&set num=
for /f "tokens=1* delims= " %%a in (%wjm%\hosts) do (
   if "%%a"=="127.0.0.1" set /a xs+=1
   if !xs! geq 2 (
     if !xs! equ 2  %tisi%&echo %yip%&set you=a
     set /a num+=1
     set !num!=%%b&echo ^(!num!^) %%b
))
echo\
if not defined you %tisi%&echo %npb%
goto :eof
:cuowu
cls&echo\&echo  你的输入错误,请重新输入。。。&echo\
goto :eofCOPY

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

评分人数

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

TOP

回复 6# 的帖子

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

TOP

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

TOP

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

TOP

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

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


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

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

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

TOP

返回列表