“^” símbolo não está funcionando corretamente no meu arquivo de lote

0

Por isso, criei um arquivo de lote, mas sempre recebo o erro "Parêntese não balanceado".

@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

O erro está no "/ A Q = ((1 - (1 - A ^ B)) * 100)"

Por favor me ajude, estou extremamente confuso porque não está funcionando.

    
por plshelp 09.08.2015 / 02:53

1 resposta

1

O problema é o sinal ^ . Como operadora, é bit-XOR (e não to the power of ) ou um continuação ou símbolo de escape .

Você pode corrigir a linha ofensiva da seguinte forma:

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

ou:

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

De sua fórmula, acho que você está procurando pela função exponent e não bitwise-XOR . Essa função não está disponível nos arquivos em lotes do Windows, mas há uma solução alternativa aqui

    
por 09.08.2015 / 07:31

Tags