标题: [系统相关] 批处理(.bat) 添加多个新的域名到hosts需先检测 [打印本页]
作者: a000001 时间: 2015-9-18 23:21 标题: 批处理(.bat) 添加多个新的域名到hosts需先检测
对于 批处理(.bat) 添加多个新的域名到hosts,
先检测是否已存在,如果已存在的域名就不添加
其他尚未存在的域名,则直接添加
google搜寻是有找到代码 如下:- set stHosts= X.X.X.X www.domainname.com
-
- FOR /F "eol=# tokens=1 delims=" %%i in (%systemroot%\system32\drivers\etc\hosts) do if "%stHosts%"=="%%i" exit
-
- echo %stHosts%>> %systemroot%\system32\drivers\etc\hosts
复制代码
不过此代码只能检测一行域名
如果要添加以下各种不同域址,如何改写代码才能检测多个的域名?
127.0.0.1 mcfg.sandai.net
127.0.0.1 211.94.190.80
127.0.0.1 advstat.xunlei.com
123.87.86.5 biz5.sandai.net
527.66.13.125 cknum.sandai.net
110.45.215.113 cl.kankan.xunlei.com
127.0.0.1 float.sandai.net
127.0.0.1 mcfg.sandai.net
180.70.134.154 mtips.xunlei.com
127.0.0.1 pubstat.sandai.net
216.58.221.74 recommend.xunlei.com
127.0.0.1 wy.xunlei.com
110.45.229.148 buy.safe.xunlei.com
作者: WHY 时间: 2015-9-19 20:56
本帖最后由 WHY 于 2015-9-19 21:13 编辑
- @echo off & setlocal enabledelayedexpansion
- set "file=%systemroot%\system32\drivers\etc\hosts"
- for /f "tokens=2" %%i in ('more +11 "%~0"') do set #%%i=1
- for /f "delims=" %%i in ('findstr /n .* %file%') do (
- set "s=%%i"
- set "s=!s:*:=!"
- for /f "tokens=1,2" %%j in ("#!s!") do if not defined #%%k echo;!s!
- )
- more +11 "%~0"
- pause & exit
-
- 127.0.0.1 mcfg.sandai.net
- 127.0.0.1 211.94.190.80
- 127.0.0.1 advstat.xunlei.com
- 123.87.86.5 biz5.sandai.net
- 527.66.13.125 cknum.sandai.net
- 110.45.215.113 cl.kankan.xunlei.com
- 127.0.0.1 float.sandai.net
- 127.0.0.1 mcfg.sandai.net
- 180.70.134.154 mtips.xunlei.com
- 127.0.0.1 pubstat.sandai.net
- 216.58.221.74 recommend.xunlei.com
- 127.0.0.1 wy.xunlei.com
- 110.45.229.148 buy.safe.xunlei.com
复制代码
作者: a000001 时间: 2015-9-20 00:59
WHY 发表于 2015-9-19 20:56
运行后发现只要有一个域名已经存在于hosts之内,就全部无法添加
其他尚未存在于hosts之内的域名,则直接添加 此动作并未成功
作者: flyinnet9 时间: 2015-9-20 02:08
本帖最后由 flyinnet9 于 2015-9-20 02:13 编辑
假设各种域址写在名为list.txt的文件中,一行一个- @echo off
- for /f "delims=" %%a in ('findstr /v /g:"%systemroot%\system32\drivers\etc\hosts" list.txt') do echo %%a>> %systemroot%\system32\drivers\etc\hosts
复制代码
作者: a000001 时间: 2015-9-20 13:08
假设各种域址写在名为list.txt的文件中,一行一个
flyinnet9 发表于 2015-9-20 02:08
测试后发现如果hosts之内有一空白行带有空格 就会失败
其他各种状况下测试都成功,就差这一步了
作者: flyinnet9 时间: 2015-9-21 10:04
本帖最后由 flyinnet9 于 2015-9-22 09:49 编辑
回复 5# a000001 - @echo off
- if exist %temp%\$ del /q %temp%\$
- for /f "delims=" %%i in (%systemroot%\system32\drivers\etc\hosts) do echo %%i>>%temp%\$
- for /f "delims=" %%a in ('findstr /e /v /g:"%temp%\$" list.txt') do echo %%a>> %systemroot%\system32\drivers\etc\hosts
复制代码
作者: a000001 时间: 2015-9-21 11:11
回复 a000001
flyinnet9 发表于 2015-9-21 10:04
已经有的域名,还是重复添加
先检测是否已存在,如果已存在的域名就不添加 此步骤未成功
作者: flyinnet9 时间: 2015-9-21 12:39
回复 7# a000001
多了个空格,已改
作者: a000001 时间: 2015-9-22 01:23
回复 a000001
多了个空格,已改
flyinnet9 发表于 2015-9-21 12:39
hosts之内,如果只留有跟添加域名有关的ip
就会造成该项域名,全部无法添加.
例如:
hosts之内,只留有127.0.0.1
就会造成以下跟该项有关的域名,全部无法添加.
127.0.0.1 mcfg.sandai.net
127.0.0.1 211.94.190.80
127.0.0.1 advstat.xunlei.com
127.0.0.1 float.sandai.net
127.0.0.1 pubstat.sandai.net
127.0.0.1 wy.xunlei.com
这有方法可以解决吗?
作者: flyinnet9 时间: 2015-9-22 09:49
回复 9# a000001
已改
作者: a000001 时间: 2015-9-22 18:09
回复 a000001
已改
flyinnet9 发表于 2015-9-22 09:49
必须在list.txt之内全部域名的最下方多添加一个空白行
list.txt之内全部域名最上方完全不可有空白行
保持此格式 才能成功
否则最后一行已经有的域名,还是重复添加造成失败
是否有办法快速且方便将域名整合入批处理中?
我目前用 echo 域名 >>list.txt 的方式,编写整合入批处理中
不过还有573个域名要写入批处理中,我写到头昏都还未编写完
是否其他编写方式快速且方便将域名整合入批处理中?
作者: a000001 时间: 2015-9-23 08:45
回复 a000001
已改
flyinnet9 发表于 2015-9-22 09:49
目前我将全部域名整合到批处理之中 ,代码如下- for /f "skip=8 delims=" %%i in ('type %0') do echo %%i>>list.txt
-
- if exist %temp%\$ del /q %temp%\$
- for /f "delims=" %%i in (%systemroot%\system32\drivers\etc\hosts) do echo %%i>>%temp%\$
- for /f "delims=" %%a in ('findstr /e /v /g:"%temp%\$" list.txt') do echo %%a>> %systemroot%\system32\drivers\etc\hosts
- del /q list.txt
- del /q %temp%\$
-
- 127.0.0.1 211.94.190.80
- 127.0.0.1 advstat.xunlei.com
- 123.87.86.5 biz5.sandai.net
- 527.66.13.125 cknum.sandai.net
- 110.45.215.113 cl.kankan.xunlei.com
- 127.0.0.1 float.sandai.net
- 127.0.0.1 mcfg.sandai.net
- 180.70.134.154 mtips.xunlei.com
- 127.0.0.1 pubstat.sandai.net
- 216.58.221.74 recommend.xunlei.com
- 127.0.0.1 wy.xunlei.com
- 110.45.229.148 buy.safe.xunlei.com
复制代码
测试未完 不知结果会如何
先来回覆进度一下给大家
作者: flyinnet9 时间: 2015-9-23 11:25
回复 12# a000001
第八行加:exit /b
作者: a000001 时间: 2015-9-23 22:33
回复 a000001
第八行加:exit /b
flyinnet9 发表于 2015-9-23 11:25
hosts之内,如果只留有跟添加域名有关的部分域名
就会造成该项域名,全部无法添加.
例如:
hosts之内,只留有xunlei
就会造成以下跟该项有关的域名,全部无法添加.
127.0.0.1 advstat.xunlei.com
110.45.215.113 cl.kankan.xunlei.com
180.70.134.154 mtips.xunlei.com
216.58.221.74 recommend.xunlei.com
127.0.0.1 wy.xunlei.com
110.45.229.148 buy.safe.xunlei.com
这有方法可以解决吗?
作者: flyinnet9 时间: 2015-9-23 23:11
回复 14# a000001
我也帮你测一下
hosts里只留下com会造成所有.com网站没法添加
hosts里只留下net会造成所有.net网站没法添加
作者: a000001 时间: 2015-9-25 11:37
回复 a000001
我也帮你测一下
hosts里只留下com会造成所有.com网站没法添加
hosts里只 ...
flyinnet9 发表于 2015-9-23 23:11
google搜寻找到的代码,并未有这些问题
是否有方法可以将那代码中的%stHosts%,改成检测 一整个 list.txt 文本?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |