@echo off
setlocal enabledelayedexpansion
:: ===== 自动提权 =====
net session >nul 2>&1
if %errorlevel% neq 0 (
powershell -Command "Start-Process cmd -ArgumentList '/c %~f0' -Verb RunAs"
exit
)
:: ===== hosts 文件 =====
set "HOST_FILE=%SystemRoot%\System32\drivers\etc\hosts"
set "TMP_FILE=%HOST_FILE%.tmp"
:: ===== 去掉只读 =====
attrib -r "%HOST_FILE%"
:: ===== 拷贝原 hosts 到临时文件 =====
copy /Y "%HOST_FILE%" "%TMP_FILE%" >nul
:: ===== 要添加/更新的记录 =====
(
echo 127.0.0.1 www.2brightsparks.com
echo 127.0.0.1 dbinternal.2brightsparks.com
) > "%HOST_FILE%.list"
:: ===== 处理每条记录 =====
for /f "usebackq tokens=1,* delims= " %%i in ("%HOST_FILE%.list") do (
set "IP=%%i"
set "DOMAIN=%%j"
set "FOUND=0"
set "NEW_TMP=%TMP_FILE%.new"
if exist "!NEW_TMP!" del /f /q "!NEW_TMP!"
:: 遍历原临时文件
for /f "usebackq delims=" %%L in ("%TMP_FILE%") do (
set "LINE=%%L"
echo !LINE! | findstr /R /C:"[ ]!DOMAIN!" >nul
if !errorlevel! EQU 0 (
echo !IP! !DOMAIN!>>"!NEW_TMP!"
set "FOUND=1"
) else (
echo !LINE!>>"!NEW_TMP!"
)
)
:: 如果没有找到域名,追加
if !FOUND! EQU 0 (
echo !IP! !DOMAIN!>>"!NEW_TMP!"
)
move /Y "!NEW_TMP!" "%TMP_FILE%" >nul
echo Added/Updated !IP! !DOMAIN!
)
:: ===== 写回 hosts =====
move /Y "%TMP_FILE%" "%HOST_FILE%" >nul
:: ===== 删除临时 list =====
del /f /q "%HOST_FILE%.list"
:: ===== 恢复只读 =====
:: attrib +r "%HOST_FILE%"
:: ===== 刷新 DNS =====
ipconfig /flushdns
echo ==== Done ====
pause