生产实践:
使用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
◎查看效果
注意:脚本需使用管理员权限运行,防护软件提示全部放行即可!