Символ "^" не працює належним чином на моєму пакетному файлі


0

Так що я створив пакетний файл, але кожен раз, коли я отримую помилку "Незбалансована дужка".

@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

Помилка в "/ A Q = ((1 - (1 - A ^ B)) * 100)"

Будь ласка, допоможіть, я дуже збентежений, чому він не працює.


Крім вашого ^ problem: арифметика пакетного файлу є тільки цілочисельністю. Якщо X потім є процентним значенням (& lt; 100) A=(X / 100) буде 0.
Scott

Відповіді:


1

Проблема в тому ^ знак. Як оператор він є побітове-XOR (і ні to the power of ) або a лінія продовження або символ втечі .

Ви можете виправити лінію порушника таким чином:

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

або:

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

З вашої формули я думаю, що ви шукаєте exponent функцію, а не bitwise-XOR. Ця функція недоступна в пакетних файлах Windows, але існує обхідний шлях тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.