标题: [其他] 如何用批处理清空或替换hosts的内容? [打印本页]
作者: sd1114820 时间: 2011-3-21 23:39 标题: 如何用批处理清空或替换hosts的内容?
比如某个批处理是:
@echo 127.0.0.1 xxx.com >>C:\Windows\System32\Drivers\etc\hosts
这样添加hosts信息以后
下次运行另一个批处理是:
@echo 6.6.6.6 xxx.com >>C:\Windows\System32\Drivers\etc\hosts
这样就有两个xxx.com的批处理了。
我想有没有办法清空在运行前写一段可以先清空hosts或直接替换hosts,
作者: bluewing009 时间: 2011-3-21 23:51
可以替换或者直接echo>清除,不过需要先去掉属性(只读吧……记得是这个,手机登陆无法测试……命令attrib)
作者: wc726842270 时间: 2011-3-22 01:35
@echo 6.6.6.6 xxx.com >C:\Windows\System32\Drivers\etc\hosts
RE:2L我这是存档(A),是网吧的电脑,感觉上不能有所差距
作者: tmplinshi 时间: 2011-3-24 06:56
本帖最后由 tmplinshi 于 2011-3-24 11:09 编辑
- @echo off
- SetLocal
- set hosts=C:\Windows\System32\Drivers\etc\hosts
- if not exist %hosts% exit /b
-
- rem 把 ::ListStart 后面的行的域名赋值为 IP 地址
- set .start=
- for /f "usebackq tokens=1,2" %%a in ("%~f0") do (
- if not defined .start (
- if "%%a"=="::ListStart" set .start=#
- ) else (
- set ?%%b=%%a
- )
- )
-
- rem 如果 hosts 文件含有 隐藏/系统/只读 属性,则去除
- for %%i in (%hosts%) do set var=%%~ai
- set var=%var:-=%
- if "%var:a=%"=="" goto _del
- set var=%var:a=%
- set att=
- set att=%var:r=-r %
- set att=%att:s=-s %
- set att=%att:h=-h %
- attrib %att% %hosts%
-
- :_del
- rem 删除重复
- for /f "delims=" %%a in (' type %hosts% ') do (
- if not defined //d set //d= >%hosts%
- for /f "tokens=1,2" %%i in ("%%a") do (
- if "%%i"=="#" (
- echo %%a
- ) else (
- if not defined ?%%j echo %%i %%j
- )
- ) >>%hosts%
- )
-
- rem 添加
- for /f "tokens=1,2 delims=?=" %%a in (' set ? ') do (
- >>%hosts% echo %%b %%a
- )
-
- rem 如果之前修改了 hosts 的文件属性,则恢复原有属性
- if defined att attrib %att:-=+% %hosts%
-
- exit /b
-
- ::ListStart
-
- ; ------------- 在下面输入要添加的条目 -------------
- 6.6.6.6 xxx.com
- 127.0.0.1 baidu.com
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |