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.