当前位置:网站首页>使用批处理脚本修改hosts文件
使用批处理脚本修改hosts文件
2022-08-02 03:29:00 【GentleTK】
最近公司有个项目需要对本地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文件
边栏推荐
猜你喜欢
随机推荐
Kotlin - 延迟初始化和密封类
无向图的连通分支数(并查集)
svg图片实战:自定义view打造中国地图
完全背包问题(动态规划)
关于我的大创、论文~
张量乘积—实验作业
【MQ-3 酒精检测器与 Arduino检测酒精】
保证接口数据安全的10种方案
win10内存占用很高,关闭所有应用程序依然降不下来(win11)
18张图,直观理解神经网络、流形和拓扑
在 UUP dump 被墙的情况下如何用 UUP 下载 ISO 镜像
【MQ-2 可燃气体和烟雾传感器与 Arduino 配合使用】
VS2017报错:LNK1120 1 个无法解析的外部命令
PAT甲级:1020 Tree Traversals
Scala 中的集合(二):集合性能比较
php laravel框架生成二维码
连接本地MySql时出现2003-Can‘t connect to MySql server on ‘localhost‘(10061)
ontop-vkg 学习1
Nest 的实现原理?理解了 reflect metadata 就懂了
laravel-admin 列表图片点击放大