Итак, я создал командный файл, но каждый раз получаю ошибку «Несбалансированные скобки».

@echo off
:top
cls
echo.
echo =========================
echo + -=-=-=-=-=-=-=-=-=-=- +
echo =========================
echo.
echo.
set /p X=Insert drop chance (1 percent = 1, 5 percent = 5):
echo.
set /p Y=Insert attempt count:
echo.
echo.
echo.
set /A A=(X / 100)
set /A B=(Y / 100)
set /A Q=(( 1 - ( 1 - A ^ B )) * 100)
echo ------------------------------------------------------------------------------
echo (1 - ((1 - (DROP CHANCE %X% / 100)) ^ (ATTEMPTS %Y% / 100) * 100 = %Q%
echo ------------------------------------------------------------------------------
echo.
echo 1 for copy, 2 for reset, 3 to close.
@CHOICE /C:123
IF ERRORLEVEL 3 EXIT
IF ERRORLEVEL 2 GOTO top
IF ERRORLEVEL 1 GOTO copy
echo.
:copy
echo %Q% | clip
pause
goto :top

Ошибка в "/ AQ =((1 - (1 - A ^ B)) * 100)"

Пожалуйста, помогите, я очень запутался, почему это не работает.

1 ответ1

1

Проблема в знаке ^ . Как оператор это битовый XOR (а не to the power of) или символ продолжения строки или escape .

Вы можете исправить ошибочную строку следующим образом:

set /A "Q=(( 1 - ( 1 - A ^ B )) * 100)"

или же:

set /A Q=(( 1 - ( 1 - A ^^ B )) * 100)

Из вашей формулы я думаю, что вы ищете функцию exponent а не bitwise-XOR . Эта функция недоступна в пакетных файлах для Windows, но есть обходной путь здесь

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .