Board logo

标题: [系统相关] 修改hots文件 [打印本页]

作者: MF9593    时间: 2020-3-22 17:31     标题: 修改hots文件

需求:某些网站/软件需要修改hots才能登录,想制作一个批处理修改hots文件,怎么弄?
文件位置:
C:\Windows\System32\drivers\etc
1.能够扫描文件中带“#”的行,判断并删除“#”号
2.能够自定义添加新的内容
3.能够备份该文件
作者: flashercs    时间: 2020-3-22 19:41

本帖最后由 flashercs 于 2020-3-22 21:57 编辑
  1. @echo off
  2. net session >nul 2>&1
  3. if errorlevel 1 (
  4.   mshta vbscript:CreateObject("Shell.Application"^).ShellExecute("%~s0","","","runas",1^)(window.close^)
  5.   exit /b
  6. )
  7. set hosts="%windir%\system32\drivers\etc\hosts"
  8. set hostsbackup="%windir%\system32\drivers\etc\hosts.bak"
  9. set tmpfile="%temp%\~~"
  10. icacls %hosts% /reset
  11. attrib -r %hosts%
  12. copy /y %hosts% %hostsbackup%
  13. >%tmpfile% findstr /blv "#" %hosts%
  14. move /y %tmpfile% %hosts%
  15. >>%hosts% (
  16.   echo.#新内容
  17.   echo.192.30.253.112 github.com
  18.   echo.192.30.253.119 gist.github.com
  19.   echo.151.101.100.133 assets-cdn.github.com
  20. )
  21. pause
  22. exit /b
复制代码

作者: kaze    时间: 2020-3-22 20:59

回复 2# flashercs


    你好,正好用得着,但是有点问题,会把之前加的其他条目去掉,(例如 127.0.0.1 upgrade.xl10.xunlei.com),二次点击时会重复添加例子的 github hosts(未作已经添加判断)
作者: flashercs    时间: 2020-3-22 21:58

回复 3# kaze


    已修改
作者: wujunkai    时间: 2020-3-23 08:04

回复 1# MF9593
  1. @echo off
  2. @setlocal enabledelayedexpansion
  3. rem 目前支持 add , backup , quit
  4. rem 格式:
  5. rem add 域名 [IP地址]
  6. rem backup
  7. rem quit
  8. rem Ps : []中的内容表示非必须
  9. rem 我有空再慢慢打磨 , 添加 del 和 restore
  10. set host="%windir%\system32\drivers\etc\hosts"
  11. set back="%windir%\system32\drivers\etc\hosts_%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%.bak"
  12. rem set host="hosts"
  13. rem set back="hosts_%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%.bak"
  14. attrib -R %host%
  15. :main
  16.     rem 主循环
  17.     set "command="
  18.     set /P command=
  19.     if "%command%"=="" (
  20.         goto:main
  21.     )
  22.     for /F "tokens=1-26" %%a in ("%command%") do (
  23.         if /I "%%a"=="add" call:add %%b %%c
  24.         if /I "%%a"=="backup" call:backup
  25.         if /I "%%a"=="quit" call:quit
  26.         echo done
  27.     )
  28. goto:main
  29. rem ----------
  30. :add
  31.     rem 添加IP和域名
  32.     rem 若IP缺省则通过ping获取
  33.     set address=%~1
  34.     if "%~2"=="" (
  35.         call:get_IP %address%
  36.     ) else (
  37.         set ip=%~2
  38.     )
  39.     echo %ip% %address% >>%host%
  40. goto:eof
  41. :get_IP
  42.     for /F "skip=6" %%i in ('ping %~1') do (
  43.         set IP=%%i
  44.         goto:eof
  45.     )
  46. goto:eof
  47. rem ----------
  48. :backup
  49.     copy %host% %back%
  50. goto:eof
  51. rem ----------
  52. :quit
  53.     attrib +R %host%
  54. exit
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2