バッチ スクリプトを使用してホスト ファイルを変更する

最近、ローカル ホスト ファイルを変更し、ローカル ドメイン名解決レコードを追加する必要があるプロジェクトが会社にありました. 顧客が操作を許可されている場合、元のホスト ファイルを破棄するのは簡単です. にカプセル化することをお勧めします.バッチ スクリプト. ユーザーは、[管理者権限で実行] を使用し、メニューに従って実行する機能を選択するだけで済みます。

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

画像-20210707110118620

2.2 ドメイン名解決の追加

ここでドメイン名解決を追加するには、IPアドレスhostsと、対応するIPアドレスが検索されます。

画像-20210707110214077

画像-20210707110319484

2.3 hosts ファイルの編集

ここでは、実際にメモ帳を呼び出してホスト ファイルを開きます。

画像-20210707110418796

2.4 ホストファイルのバックアップ

ここでのバックアップ ファイルはhosts.日期时间、ファイル名形式でバックアップされます。

画像-20210707110456765

2.5 hosts ファイルの復元

復元とは、実際にはサフィックスをhosts.init削除て元のhostsファイルを置き換えることです。

画像-20210707110540412

2.6 DNS キャッシュをフラッシュして終了する

dnsを更新する前hostsに、まずファイルの内容を出力し、次に更新dnsコマンドてスクリプトを終了します。

画像-20210707110618166

記事の著者: GentleTK
元のリンク: https://gentletk.gitee.io/ バッチ スクリプトを使用してホスト ファイルを変更する

おすすめ

転載: blog.csdn.net/qq_40531408/article/details/126070333