使用批处理脚本修改hosts文件
最近公司有个项目需要对本地hosts文件进行修改,添加一条本地域名解析记录,如果让客户去操作,很容易破坏掉原先的hosts文件,最好是能封装成一个批处理脚本,用户只需要以管理员权限运行,然后根据菜单选择需要执行的功能即可。
1 批处理脚本
:: 关闭命令的回显 @echo off :: 设置hosts文件路径 set HOSTS=C:\Windows\System32\drivers\etc\hosts :: 判断当前路径是否存在 hosts.init 文件, 不存在则备份 if not exist %HOSTS%.init ( copy /y %HOSTS% %HOSTS%.init && echo 系统hosts文件备份完成! ) :: %date%=2021年07月07日 :: %time%= 9:12:38:96 :: 年 yyyy = %date:~0,4% 表示指针从左到右偏移 0 位, 然后提取 4 字符 :: 月 mm = %date:~5,2% 表示指针从左到右偏移 5 位, 然后提取 2 字符 :: 日 dd = %date:~8,2% 表示指针从左到右偏移 8 位, 然后提取 2 字符 set yyyymmdd=%date:~0,4%-%date:~5,2%-%date:~8,2% :: 时 hh = %time:~0,2% 表示指针从左到右偏移 0 位, 然后提取 2 字符 :: 分 mm = %time:~3,2% 表示指针从左到右偏移 3 位, 然后提取 2 字符 :: 秒 ss = %time:~6,2% 表示指针从左到右偏移 6 位, 然后提取 2 字符 set hh=%time:~0,2% set mm=%time:~3,2% set ss=%time:~6,2% :: 当 hh 小于等于 9 时, 在前面补 0 if %hh% leq 9 (set hh=0%hh:~1,1%) GOTO MENU :MENU ECHO. ECHO.############################## 修改系统hosts解析文件 ############################## ECHO.# ECHO.# 1.添加域名解析 ECHO.# ECHO.# 2.编辑hosts文件 ECHO.# ECHO.# 3.备份hosts文件 ECHO.# ECHO.# 4.还原hosts文件 ECHO.# ECHO.# 5.刷新dns缓存并退出 ECHO.# ECHO.############################### %yyyymmdd% %hh%:%mm%:%ss% ############################### set /p="请输入您要操作的序号:"<nul @set /p sel= if "%sel%"=="1" goto add_ipdomain if "%sel%"=="2" goto edit_hosts if "%sel%"=="3" goto backup_hosts if "%sel%"=="4" goto reset_hosts if "%sel%"=="5" goto refresh_dns PAUSE :add_ipdomain set /p="请输入IP地址和域名(中间以空格分隔):"<nul @set /p ip_domain= type %HOSTS% |findstr /v "^#"| findstr /i "%ip_domain%\>" if %errorlevel% == 0 ( echo %ip_domain% 已存在,请重新添加!&& goto MENU ) else ( echo.%ip_domain% >> %HOSTS% && echo %ip_domain% 添加成功,请按任意键返回菜单!&& pause >nul ) goto MENU :edit_hosts title 编辑hosts本地域名解析文件 notepad %HOSTS% echo 按任意键返回菜单! pause >nul goto MENU :backup_hosts title 备份hosts文件 set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2% copy /y %HOSTS% %HOSTS%.%yyyymmdd%%hh%%mm% echo ("%HOSTS%.%yyyymmdd%%hh%%mm%") 备份完毕,按任意键返回菜单! pause >nul goto MENU pause :reset_hosts title 还原hosts文件 copy /y %HOSTS%.init %HOSTS% echo hosts文件已还原至初始状态,按任意键返回菜单! pause >nul goto MENU :refresh_dns title 刷新本地dns缓存并退出 echo 查看修改后的hosts文件内容,5秒后退出! type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]" ping -n 5 127.0.0.1>nul ipconfig /flushdns echo 刷新本地缓存成功,即将退出! ping -n 3 127.0.0.1>nul echo. exit
2 使用方法
2.1 功能菜单
第一次以管理员权限运行脚本会备份一份hosts.init
文件,作为hosts
初始文件,方便以后还原。
2.2 添加域名解析
添加域名解析这里采用的是手动输入 IP
地址 + 域名,并且会检索hosts
文件里是否已经存在对应的 IP
地址和域名,如果存在,则提示用户重新添加。
2.3 编辑 hosts 文件
这里其实就是调用记事本来打开hosts文件。
2.4 备份 hosts文件
这里的备份文件是以hosts.日期时间
的文件名格式来备份的。
2.5 还原 hosts文件
还原其实就是将 hosts.init
去掉后缀名,替换掉原先的 hosts
文件。
2.6 刷新 dns 缓存并退出
在刷新 dns
前,会先将 hosts
文件中的内容打印一下,然后执行刷新 dns
命令后退出脚本。
文章作者:GentleTK
原文链接:https://gentletk.gitee.io/使用批处理脚本修改hosts文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」