Exempel på Batch-skript

Här är en snabb översikt över jämförelseoperatorerna i batch:

  • lss: less than (mindre än)
  • leq: less than or equal (mindre än eller lika med)
  • gtr: greater than (större än)
  • geq: greater than or equal (större än eller lika med)
  • equ: equal (lika med)
  • neq: not equal (inte lika med)

Hälsa användaren:

  • Lägg till ett mellanslag direkt efter frågetecknet. Exempelvis: Vad heter du? , så att det finns ett tydligt mellanrum mellan frågan och användarens inmatning.
@echo off
set /p name=Vad heter du? 
echo Hej, %name%! Välkommen till del 2: Operativsystem!
pause

Det magiska numret:

  • set /a: Används för att utföra aritmetiska beräkningar.
  • %random%: Genererar ett slumpmässigt tal mellan 0 och 32767.
  • %% 10: Modulusoperatorn (%%) används här för att få ett tal mellan 0 och 9. När random delas med 10 ger %% resten (talet mellan 0 och 9).
  • + 1: Lägger till 1, så att intervallet blir mellan 1 och 10.
  • Resultatet lagras i variabeln magicNumber.
  • Till exempel, om värdet 32767 divideras med 10, blir resultatet 3276 med en rest på 7. Detta 7 är modulusvärdet, och genom att addera 1 får vi värdet 8.
@echo off
set /a magicNumber=%random% %% 10 + 1
set /p guess=Gissa ett nummer mellan 1 och 10:
if %guess%==%magicNumber% (
echo Rätt gissat! Du hittade det magiska numret!
) else (
echo Fel! Det magiska numret var %magicNumber%.
)
pause

Ange säsongen:

Detta skript använder månadens numeriska värde för att identifiera årstiden:

  • Vinter: Januari, Februari, December (1, 2, 12)
  • Vår: Mars, April, Maj (3, 4, 5)
  • Sommar: Juni, Juli, Augusti (6, 7, 8)
  • Höst: September, Oktober, November (9, 10, 11)

Låt oss anta att systemvariabeln %date% innehåller "2024-11-01" (detta är formatet ÅÅÅÅ-MM-DD):

  • %date% är en variabel som innehåller datumet som en textsträng, t.ex., "2024-11-01".
  • %date:~5,2%: Här betyder :~5,2 att vi vill börja på position 5 och hämta 2 tecken från denna position.
  • I strängen "2024-11-01":
    • Position 0 är 2
    • Position 1 är 0
    • Position 2 är 2
    • Position 3 är 4
    • Position 4 är -
    • Position 5 är 1 (första siffran i månads delen "11")
    • Så, ~5,2 extraherar två tecken, "11", från position 5 och 6.
@echo off
set month=%date:~5,2%
if %month% lss 3 (
echo Det är vinter.
) else if %month% lss 6 (
echo Det är vår.
) else if %month% lss 9 (
echo Det är sommar.
) else if %month% lss 12 (
echo Det är höst.
) else (
echo Det är vinter.
)
pause

Visa aktuell tid:

@echo off
echo Aktuell tid: %time%
pause

Visa veckonummer:

@echo off
for /f "tokens=2 delims==" %%i in ('"wmic path win32_localtime get weekinyear /format:list"') do set week=%%i
echo Veckonummer: %week%
pause

Visa månaden och datumet:

@echo off
echo Månaden är: %date:~5,2%
echo Datumet är: %date:~8,2%
pause

Frågesport om batch:

@echo off
echo Välkommen till batch-frågesporten!
set /p answer1="Vad betyder @echo off? "
if /i "%answer1%"=="döljer kommandon" (
echo Korrekt!
) else (
echo Fel! Rätt svar är: döljer kommandon.
)
set /p answer2="Vad gör kommandot set /p? "
if /i "%answer2%"=="läser input" (
echo Rätt!
) else (
echo Fel! Rätt svar är: läser input.
)
pause

Gissa ett nummer mellan 1 och 100:

@echo off
setlocal enabledelayedexpansion
:: Generera ett slumpmässigt nummer mellan 1 och 100
set /a target=%random% %% 100 + 1
set attempts=0
echo Välkommen till "Gissa Numret"!
echo Jag har valt ett nummer mellan 1 och 100. Kan du gissa vilket det är?
echo.
:guess_loop
set /p guess=Skriv in din gissning:
set /a attempts+=1
:: Kontrollera om gissningen är korrekt, för hög eller för låg
if !guess! equ !target! (
echo Grattis! Du gissade rätt nummer på !attempts! försök!
goto end
) else if !guess! lss !target! (
echo För lågt! Försök igen.
) else (
echo För högt! Försök igen.
)
goto guess_loop
:end
echo Tack för att du spelade!
pause

Sten, sax, påse:

@echo off
setlocal enabledelayedexpansion
echo Välkommen till Sten, Sax, Påse!
echo.
echo Skriv "sten", "sax" eller "påse" för att göra ditt val.
echo.
:play
:: Låt användaren göra sitt val
set /p playerChoice=Ditt val (sten, sax, påse):
set playerChoice=!playerChoice:~0,3!
:: Generera datorns val
set /a computerChoice=%random% %% 3
if %computerChoice%==0 set computerChoice=sten
if %computerChoice%==1 set computerChoice=sax
if %computerChoice%==2 set computerChoice=påse
:: Visa datorns val
echo Datorn valde: %computerChoice%
echo.
:: Bestäm vinnaren
if /i "%playerChoice%"=="%computerChoice%" (
echo Oavgjort! Båda valde %computerChoice%.
) else if /i "%playerChoice%"=="sten" (
if "%computerChoice%"=="sax" (
echo Du vann! Sten slår sax.
) else (
echo Datorn vann! Påse slår sten.
)
) else if /i "%playerChoice%"=="sax" (
if "%computerChoice%"=="påse" (
echo Du vann! Sax slår påse.
) else (
echo Datorn vann! Sten slår sax.
)
) else if /i "%playerChoice%"=="påse" (
if "%computerChoice%"=="sten" (
echo Du vann! Påse slår sten.
) else (
echo Datorn vann! Sax slår påse.
)
) else (
echo Ogiltigt val! Försök igen med "sten", "sax" eller "påse".
goto play
)
:: Fråga om spelaren vill spela igen
echo.
set /p playAgain=Vill du spela igen? (j/n):
if /i "%playAgain%"=="j" goto play
echo Tack för att du spelade! Hej då!
pause

Hämta datorns IP-adress 1:

@echo off
echo Hämtar datorns IP-adress...
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IPv4 Address"') do echo Din IP-adress är: %%a
pause

Hämta datorns IP-adress 2:

  • set ethernet_ip=N/A och set wifi_ip=N/A: Initierar variablerna ethernet_ip och wifi_ip med värdet N/A, vilket indikerar att ingen IP-adress har hittats ännu. Om ingen IP-adress hittas för en adapter, kommer N/A att visas som standard.
  • for /f: Startar en loop som analyserar utdata från ipconfig.
  • tokens=2 delims=:: Delar varje rad i två delar baserat på kolon (:), där tokens=2 betyder att vi endast vill ha texten efter kolon, vilket är själva IP-adressen.
  • in ('ipconfig ^| findstr /C:"Ethernet adapter Ethernet 2" /C:"IPv4 Address"'): Kör kommandot ipconfig och använder findstr för att söka efter rader som innehåller:
    • "Ethernet adapter Ethernet 2" för att hitta adaptern.
    • "IPv4 Address" för att hitta raden med IP-adressen.
  • if "!ethernet_ip!"=="N/A": Kontrollerar om ethernet_ip fortfarande har värdet N/A. Om den har det, innebär det att vi inte har sparat en IP-adress för denna adapter än.
  • set "ethernet_ip=%%a": Sparar värdet från %%a (IP-adressen) i ethernet_ip. Eftersom vi har satt villkoret if "!ethernet_ip!"=="N/A", sparas endast den första hittade IP-adressen.
@echo off
echo Hämtar IP-adresser för Ethernet adapter Ethernet 2 och Wireless LAN adapter Wi-Fi...
setlocal enabledelayedexpansion

set ethernet_ip=N/A
set wifi_ip=N/A

:: Sök efter Ethernet adapter Ethernet 2 IP-adress
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /C:"Ethernet adapter Ethernet 2" /C:"IPv4 Address"') do (
    if "!ethernet_ip!"=="N/A" (
        set "ethernet_ip=%%a"
    )
)

:: Sök efter Wireless LAN adapter Wi-Fi IP-adress
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /C:"Wireless LAN adapter Wi-Fi" /C:"IPv4 Address"') do (
    if "!wifi_ip!"=="N/A" (
        set "wifi_ip=%%a"
    )
)

:: Visa IP-adresserna
echo Ethernet 2 IP-adress:%ethernet_ip%
echo Wi-Fi IP-adress:%wifi_ip%
pause

Inför prov del 2 operativsystem:

@echo off
setlocal enabledelayedexpansion
echo Välkommen till Operativsystems-Frågesport!
echo Svara på följande frågor genom att skriva ditt svar.
echo För varje rätt svar får du 1 poäng.
echo.
set score=0
:: Fråga 1 - HAL
echo Fråga 1: Vad är HAL (Hardware Abstraction Layer) i operativsystem?
echo A) Ett program som hanterar filer
echo B) En del av kerneln som kommunicerar med hårdvaran
echo C) Ett verktyg för att installera program
set /p answer1=Ange ditt svar (A, B eller C):
if /i "%answer1%"=="B" (
echo Rätt svar!
set /a score+=1
) else (
echo Fel svar. Rätt svar är B) En del av kerneln som kommunicerar med hårdvaran.
)
echo.
:: Fråga 2 - HAL
echo Fråga 2: Vilken funktion har HAL i ett operativsystem?
echo A) Att abstrahera hårdvarufunktioner för operativsystemet
echo B) Att skapa ett grafiskt gränssnitt
echo C) Att hantera säkerhet på nätverksnivå
set /p answer2=Ange ditt svar (A, B eller C):
if /i "%answer2%"=="A" (
echo Rätt svar!
set /a score+=1
) else (
echo Fel svar. Rätt svar är A) Att abstrahera hårdvarufunktioner för operativsystemet.
)
echo.
:: Fråga 3 - Processer
echo Fråga 3: Vad är en process i ett operativsystem?
echo A) En enhet av minne
echo B) En körande instans av ett program
echo C) En del av filsystemet
set /p answer3=Ange ditt svar (A, B eller C):
if /i "%answer3%"=="B" (
echo Rätt svar!
set /a score+=1
) else (
echo Fel svar. Rätt svar är B) En körande instans av ett program.
)
echo.
:: Fråga 4 - Processer
echo Fråga 4: Vilket kommando används i Windows för att lista aktiva processer?
echo A) ps
echo B) top
echo C) tasklist
set /p answer4=Ange ditt svar (A, B eller C):
if /i "%answer4%"=="C" (
echo Rätt svar!
set /a score+=1
) else (
echo Fel svar. Rätt svar är C) tasklist.
)
echo.
:: Fråga 5 - Filsystem
echo Fråga 5: Vilket filsystem är standard i moderna Windows-operativsystem?
echo A) FAT32
echo B) NTFS
echo C) ext4
set /p answer5=Ange ditt svar (A, B eller C):
if /i "%answer5%"=="B" (
echo Rätt svar!
set /a score+=1
) else (
echo Fel svar. Rätt svar är B) NTFS.
)
echo.
:: Fråga 6 - Filsystem
echo Fråga 6: Vilket filsystem är standard i moderna Linux-operativsystem?
echo A) NTFS
echo B) ext4
echo C) FAT32
set /p answer6=Ange ditt svar (A, B eller C):
if /i "%answer6%"=="B" (
echo Rätt svar!
set /a score+=1
) else (
echo Fel svar. Rätt svar är B) ext4.
)
echo.
:: Visa total poäng
echo Du fick totalt %score% poäng av 6 möjliga!
if %score%==6 (
echo Fantastiskt! Du fick alla rätt!
) else if %score% gtr 3 (
echo Bra jobbat! Du fick %score% rätt.
) else (
echo Du fick %score% rätt. Bättre lycka nästa gång!
)
pause