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

[其他] 如何用批处理清空或替换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,

可以替换或者直接echo>清除,不过需要先去掉属性(只读吧……记得是这个,手机登陆无法测试……命令attrib)

TOP

@echo 6.6.6.6 xxx.com >C:\Windows\System32\Drivers\etc\hosts
RE:2L我这是存档(A),是网吧的电脑,感觉上不能有所差距
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 tmplinshi 于 2011-3-24 11:09 编辑
  1. @echo off
  2. SetLocal
  3. set hosts=C:\Windows\System32\Drivers\etc\hosts
  4. if not exist %hosts% exit /b
  5. rem 把 ::ListStart 后面的行的域名赋值为 IP 地址
  6. set .start=
  7. for /f "usebackq tokens=1,2" %%a in ("%~f0") do (
  8.     if not defined .start (
  9.         if "%%a"=="::ListStart" set .start=#
  10.     ) else (
  11.         set ?%%b=%%a
  12.     )
  13. )
  14. rem 如果 hosts 文件含有 隐藏/系统/只读 属性,则去除
  15. for %%i in (%hosts%) do set var=%%~ai
  16. set var=%var:-=%
  17. if "%var:a=%"=="" goto _del
  18. set var=%var:a=%
  19. set att=
  20. set att=%var:r=-r %
  21. set att=%att:s=-s %
  22. set att=%att:h=-h %
  23. attrib %att% %hosts%
  24.    
  25. :_del
  26. rem 删除重复
  27. for /f "delims=" %%a in (' type %hosts% ') do (
  28.     if not defined //d set //d= >%hosts%
  29.     for /f "tokens=1,2" %%i in ("%%a") do (
  30.         if "%%i"=="#" (
  31.             echo %%a
  32.         ) else (
  33.             if not defined ?%%j echo %%i %%j
  34.         )
  35.     ) >>%hosts%
  36. )
  37. rem 添加
  38. for /f "tokens=1,2 delims=?=" %%a in (' set ? ') do (
  39.     >>%hosts% echo %%b %%a
  40. )
  41. rem 如果之前修改了 hosts 的文件属性,则恢复原有属性
  42. if defined att attrib %att:-=+% %hosts%
  43. exit /b
  44. ::ListStart
  45. ; ------------- 在下面输入要添加的条目 -------------
  46. 6.6.6.6 xxx.com
  47. 127.0.0.1 baidu.com
复制代码

TOP

返回列表