Aritmetiska operatorer

Batch-skript i Windows har en inbyggd funktion för att utföra aritmetiska operationer genom kommandot set /a. Operatorerna är ganska grundläggande men ger möjlighet att utföra addition, subtraktion, multiplikation, division och modulus, samt några logiska operationer.

Grunderna i set /a och dess operatorer

Med set /a kan du göra beräkningar direkt i batch-skript. Här är en sammanfattning av de aritmetiska operatorerna och hur de kan användas:

Operator Beskrivning Exempel
+ Addition set /a x = 5 + 2
Subtraktion set /a x = 5 - 2
* Multiplikation set /a x = 5 * 2
/ Division set /a x = 5 / 2
% Modulus (resten) set /a x = 5 %% 2

Obs: set /a x = 5 + 2 kan skrivas också så här set /a x=5+2

Grundläggande beräkningar

Här är ett enkelt exempel där vi använder alla operatorer för att utföra olika beräkningar med variablerna a och b:

@echo off
:: Definiera variabler a och b
set /a a=10
set /a b=3
:: Utför olika beräkningar och skriv ut resultatet
set /a sum=a+b
echo Addition: %a% + %b% = %sum%
set /a diff=a-b
echo Subtraktion: %a% - %b% = %diff%
set /a prod=a*b
echo Multiplikation: %a% * %b% = %prod%
set /a div=a/b
echo Division: %a% / %b% = %div%
set /a mod=a%%b
echo Modulus: %a% %% %b% = %mod%
pause

Bygga en Interaktiv Aritmetisk Räknare

Nu ska vi skapa ett mer avancerat skript som tillåter användaren att skriva in en enkel aritmetisk operation och få resultatet direkt. Vi kommer att lägga till:

  • Användaren anger två tal och en operator
  • Ett villkor för att välja rätt operation baserat på inmatning
  • :loop är start av programmet medan :: Fråga användaren o.s.v. är en kommentar
  • set /p skapar variabler. Variabler anges med procenttecknet
@echo off
:: Detta tillåter användning av variabler flera gånger
setlocal enabledelayedexpansion
:start
:: Be användaren ange det första talet
set /p num1="Ange första talet: "
if not defined num1 (
echo Fel: Ingen inmatning. Ange ett tal.
goto start
)
for /f "delims=0123456789" %%a in ("!num1!") do (
echo Fel: Ange ett giltigt nummer.
goto start
)
:: Be användaren ange det andra talet
set /p num2="Ange andra talet: "
if not defined num2 (
echo Fel: Ingen inmatning. Ange ett tal.
goto start
)
for /f "delims=0123456789" %%a in ("!num2!") do (
echo Fel: Ange ett giltigt nummer.
goto start
)
:: Be användaren välja en operator
echo Välj en operator: +, -, *, /, eller %
set /p op="Ange operator: "
:: Kontrollera om operatorn är giltig och utför beräkningen
if "%op%"=="+" (
set /a result=num1+num2
) else if "%op%"=="-" (
set /a result=num1-num2
) else if "%op%"=="*" (
set /a result=num1*num2
) else if "%op%"=="/" (
if %num2%==0 (
echo Fel: Division med noll är inte tillåten.
goto start
) else (
set /a result=num1/num2
)
) else if "%op%"=="%%" (
set /a result=num1%%num2
) else (
echo Fel: Ogiltig operator. Ange en av följande: +, -, *, /, eller %
goto start
)
:: Visa resultatet om operatorn var giltig
echo.
echo Resultat: %num1% %op% %num2% = %result%
echo.
:: Fråga om användaren vill fortsätta
set /p choice="Vill du göra en ny beräkning? (j/n): "
if /i "%choice%"=="j" (
echo.
goto start
) else (
echo Tack för att du använde räknaren!
endlocal
exit
)
:: endlocal avslutar ett lokalt block av miljövariabler och återgår till de variabler som gällde före setlocal.

Denna räknare är ett utmärkt exempel på hur man kan skapa ett mer användarvänligt och interaktivt skript i batch med hjälp av enkla aritmetiska operationer och villkor.