找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24038|回复: 4

[系统相关] 修改hots文件

[复制链接]
发表于 2020-3-22 17:31:41 | 显示全部楼层 |阅读模式
需求:某些网站/软件需要修改hots才能登录,想制作一个批处理修改hots文件,怎么弄?
文件位置:
C:\Windows\System32\drivers\etc
1.能够扫描文件中带“#”的行,判断并删除“#”号
2.能够自定义添加新的内容
3.能够备份该文件
发表于 2020-3-22 19:41:59 | 显示全部楼层
本帖最后由 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
复制代码

评分

参与人数 1技术 +1 收起 理由
MF9593 + 1 感谢分享

查看全部评分

发表于 2020-3-22 20:59:48 | 显示全部楼层
回复 2# flashercs


    你好,正好用得着,但是有点问题,会把之前加的其他条目去掉,(例如 127.0.0.1 upgrade.xl10.xunlei.com),二次点击时会重复添加例子的 github hosts(未作已经添加判断)
发表于 2020-3-22 21:58:19 | 显示全部楼层
回复 3# kaze


    已修改
发表于 2020-3-23 08:04:09 | 显示全部楼层
回复 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
复制代码

评分

参与人数 3技术 +3 收起 理由
a6513375 + 1 乐于助人
kaze + 1 想法不错
MF9593 + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 15:51 , Processed in 0.019470 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表