Il simbolo “^” non funziona correttamente sul mio file batch


0

Quindi ho creato un file batch, ma ogni volta che visualizzo l'errore "Parentesi non bilanciata".

@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

L'errore è "/ AQ = ((1 - (1 - A ^ B)) * 100)"

Aiutatemi, sono estremamente confuso perché non funziona.


Oltre al ^problema: l'aritmetica del file batch è di soli numeri interi. Se Xè un valore percentuale (<100), A=(X / 100)sarà 0.
Scott

Risposte:


1

Il problema è il ^segno. Come operatore è XOR bit a bit (e non to the power of) o un simbolo di continuazione di linea o di escape .

È possibile correggere la linea incriminata come segue:

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

o:

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

Dalla tua formula penso che tu stia cercando la exponentfunzione e non bitwise-XOR. Questa funzione non è disponibile in file batch di Windows, ma c'è una soluzione qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.