@echo off
setlocal EnableDelayedExpansion

if "%~1"=="" (
    echo Uzycie: %~n0 ^<plik.ini^> ^<sekcja^> ^<klucz^>
    echo Przyklady:
    echo   %~n0 config.ini SECTION key
    echo   %~n0 config.ini SECTION    ^   ^   ^   - wyswietla wszystkie klucze w sekcji
    exit /b 1
)

set "INI_FILE=%~f1"
set "SEKCJA=%~2"
set "KLUCZ=%~3"

if not exist "%INI_FILE%" (
    echo Blad: Plik '%INI_FILE%' nie istnieje!
    exit /b 1
)

set "CURRENT_SECTION="
set "FOUND=0"
set "KLUCZ_VALUE="

for /f "usebackq tokens=1,2 delims==" %%A in ("%INI_FILE%") do (
    set "LINE=%%A"
    set "VALUE=%%B"
    
    for %%T in (= :) do set "VALUE=!VALUE:%%T=!"
    
    echo !LINE! | findstr /b /r /c:"^\[" >nul
    if not errorlevel 1 (
        set "CURRENT_SECTION=!LINE!"
    )
    
    if "!CURRENT_SECTION!"=="[%SEKCJA%]" (
        echo !LINE! | findstr /r "^[^#;].*=" >nul
        if not errorlevel 1 (
            if not defined KLUCZ (
                if "!VALUE!" neq "" (
                    echo !LINE! = !VALUE!
                    set "FOUND=1"
                )
            ) else (
                if /i "!LINE!"=="%KLUCZ%" (
                    echo !VALUE!
                    set "FOUND=1"
                    set "KLUCZ_VALUE=!VALUE!"
                    goto done
                )
            )
        )
    )
)

:done
if %FOUND%==0 (
    if defined KLUCZ (
        echo Blad: Klucz '%KLUCZ%' nie znaleziony w sekcji '[%SEKCJA%]'
        exit /b 1
    ) else (
        echo Blad: Sekcja '[%SEKCJA%]' nie znaleziona lub jest pusta
        exit /b 1
    )
)

endlocal
exit /b 0