@echo off
setlocal EnableDelayedExpansion

if "%~1"=="" (
    echo Uzycie: %~n0 ^<liczba1^> ^<liczba2^> ^<operator^>
    echo Operator: + - * / %%
    exit /b 1
)

if "%~2"=="" (
    echo Blad: Podaj dwie liczby!
    echo Uzycie: %~n0 ^<liczba1^> ^<liczba2^> ^<operator^>
    exit /b 1
)

set "LICZBA1=%~1"
set "LICZBA2=%~2"
set "OPERATOR=%~3"

if "%OPERATOR%"=="" (
    set "OPERATOR=+"
)

echo Sprawdzanie argumentow...

echo %LICZBA1% | findstr /r "^[0-9-]*$" >nul
if errorlevel 1 (
    echo Blad: '%LICZBA1%' nie jest liczba calkowita!
    exit /b 1
)

echo %LICZBA2% | findstr /r "^[0-9-]*$" >nul
if errorlevel 1 (
    echo Blad: '%LICZBA2%' nie jest liczba calkowita!
    exit /b 1
)

set /a TEST=LICZBA1 2>nul
if errorlevel 1 (
    echo Blad: '%LICZBA1%' nie jest poprawna liczba!
    exit /b 1
)

set /a TEST=LICZBA2 2>nul
if errorlevel 1 (
    echo Blad: '%LICZBA2%' nie jest poprawna liczba!
    exit /b 1
)

if "%OPERATOR%"=="+" (
    set /a WYNIK=LICZBA1 + LICZBA2
) else if "%OPERATOR%"=="-" (
    set /a WYNIK=LICZBA1 - LICZBA2
) else if "%OPERATOR%"=="*" (
    set /a WYNIK=LICZBA1 * LICZBA2
) else if "%OPERATOR%"=="/" (
    if %LICZBA2%==0 (
        echo Blad: Dzielenie przez zero! >&2
        exit /b 1
    )
    set /a WYNIK=LICZBA1 / LICZBA2
) else if "%OPERATOR%"=="%%" (
    if %LICZBA2%==0 (
        echo Blad: Dzielenie przez zero! >&2
        exit /b 1
    )
    set /a WYNIK=LICZBA1 %% LICZBA2
) else (
    echo Blad: Nieznany operator: '%OPERATOR%'!
    echo Dopuszczalne operatory: + - * / %%
    exit /b 1
)

echo.
echo ========================================
echo %LICZBA1% %OPERATOR% %LICZBA2% = %WYNIK%
echo ========================================
echo.

endlocal
exit /b 0