使用bat脚本操作win下hosts本地域名解析文件

  • 生产实践:

    使用bat脚本操作win下hosts本地域名解析文件

    1.用于CDN域名测试

    2.CQ批量添加域名

  • 学习技巧:

    bat脚本语法使用

  • 脚本内容:

最近测了4、5家CDN厂商,经常需要绑定本地解析来测试,手动编辑win10的hosts文件比较麻烦,写个脚本省事,有兴趣的可以继续完善。


@echo off
echo ############################################################
echo # $Name:         cfgHosts.bat
echo # $Version:      v1.0
echo # $Function:     add or del domain in hosts
echo # $Author:       Zhihe An
echo # $organization: chegva.com
echo # $Create Date:  2017-08-08
echo ############################################################

set HOSTS=C:\Windows\System32\drivers\etc\hosts
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
set hh=%time:~0,2%
if %hh% leq 9 (set hh=0%hh:~1,1%)
set mm=%time:~3,2%
set sec=%TIME:~6,2%
if not exist %HOSTS%.init (
    copy /y %HOSTS% %HOSTS%.init && echo #####备份系统初始hosts文件完成#####
)
GOTO MENU
:MENU
ECHO.
ECHO.=-=-=-=-=-=-=-=-=-=-=-=修改系统hosts解析文件=-=-=-=-=-=-=-=-=-=-=-=
ECHO.
ECHO.1.手动添加域名解析 (例:控制台输入:8.8.8.8 chegva.com)
ECHO.
ECHO.2.批量添加域名解析 (将需要添加的域名解析写入桌面hosts.txt文件里即可)
ECHO.
ECHO.3.查找已添加的域名 (支持模糊查询)
ECHO.
ECHO.4.查看已添加的域名
ECHO.
ECHO.5.编辑hosts本地域名解析文件
ECHO.
ECHO.6.备份hosts文件
ECHO.
ECHO.7.还原hosts文件至系统初始状态
ECHO.
ECHO.8.退出并刷新本地dns缓存
ECHO.
ECHO.=-=-=-=-=-=-=-=-=-=-=-== %yyyymmdd% %hh%:%mm%:%sec% =-=-=-=-=-=-=-=-=-=-=-=-
set /p="请输入您要操作的序号:"<nul
@set /p  ID=
if "%id%"=="1"  goto addHost
if "%id%"=="2" goto addHosts
if "%id%"=="3" goto printHost
if "%id%"=="4" goto printALL
if "%id%"=="5"  goto cfgHost
if "%id%"=="6"  goto bakHost
if "%id%"=="7"  goto resHost
if "%id%"=="8"  goto byebye
PAUSE
:addHost
title 手动添加域名解析
:Again
set /p="请输入IP地址和域名(中间以空格分隔):"<nul
@set /p  ip_domain=
if "%ip_domain%"=="" goto Again
if "%ip_domain%"=="0" goto MENU
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)
cls
goto MENU
:addHosts
title 批量添加域名解析
for /f "eol=# tokens=1 delims=" %%i in (C:\Users\Administrator\Desktop\hosts.txt) 
do (echo %%i >> %HOSTS%)
for /f "eol=# tokens=1 delims=" %%i in (C:\Users\Administrator\Desktop\hosts.txt) 
do echo %%i
echo 以上域名已添加成功,请按任意键返回菜单!
pause >nul
GOTO MENU
:printHost
title 查看已添加的域名解析
:Again1
set /p="请输入域名(支持模糊查询):"<nul
@set /p  pri_domain=
if "%pri_domain%"=="" goto Again1
type %HOSTS% |findstr /v "^#"| findstr /i "%pri_domain%" >nul
if %errorlevel%==0 (type %HOSTS% |findstr /v "^#"| findstr /i "%pri_domain%") else
 (echo 包含%pri_domain%的域名不存在!)
echo 按任意键返回菜单!
pause >nul
GOTO MENU
:printALL
echo ###############当前域名解析###############
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
echo ########################################## 
echo 按任意键返回菜单!
pause >nul
GOTO MENU
:cfgHost
title 编辑hosts本地域名解析文件
notepad %HOSTS%
echo 按任意键返回菜单!
pause >nul
GoTO MENU
:bakHost
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
:resHost
title 还原hosts文件
copy /y %HOSTS%.init %HOSTS%
echo hosts文件已还原至初始状态,按任意键返回菜单!
pause >nul
GoTO MENU
:byebye
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

◎查看效果

使用bat脚本操作win下hosts本地域名解析文件

注意:脚本需使用管理员权限运行,防护软件提示全部放行即可!

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/2421.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注