@echo off
setlocal enabledelayedexpansion

:: Sprawdzenie i automatyczne podniesienie uprawnień administracyjnych
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
    echo zadanie uprawnien administratora...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B

:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
cd /d "%~dp0"

:: Menu wyboru
echo Wybierz opcje:
echo 1. Dodaj wpis do pliku hosts
echo 2. Usun wpis z pliku hosts (komentowanie)
set /p choice="Podaj numer opcji (1/2): "

if "%choice%"=="1" (
    set mode=add
) else if "%choice%"=="2" (
    set mode=remove
) else (
    echo Nieprawidlowy wybor.
    pause
    exit /b
)

:: Pobieranie IP i domeny
set /p ip="Podaj adres IP: "
set /p domain="Podaj nazwe domeny: "

:: Ścieżka do pliku hosts
set "hostsfile=C:\Windows\System32\drivers\etc\hosts"
set "tempfile=%temp%\hosts.tmp"

if "%mode%"=="add" (
    echo %ip% %domain% >> "%hostsfile%"
    echo Dodano wpis do pliku hosts.
) else if "%mode%"=="remove" (
    :: Komentowanie (dodawanie #)
    powershell -Command "$content = Get-Content '%hostsfile%'; $newContent = $content | ForEach-Object { if ($_ -match '^%ip%\s+%domain%') { '#' + $_ } else { $_ } }; $newContent | Out-File -FilePath '%tempfile%' -Encoding UTF8"
    copy /y "%tempfile%" "%hostsfile%" > nul
    del "%tempfile%"
    echo Wpis został zakomentowany.
)

:: Otwieranie pliku hosts w Notatniku
start notepad.exe "%hostsfile%"

pause