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ärrandom
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 med10
, blir resultatet3276
med en rest på7
. Detta7
är modulusvärdet, och genom att addera1
får vi värdet8
.
@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.
- Position 0 är
@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
ochset wifi_ip=N/A
: Initierar variablernaethernet_ip
ochwifi_ip
med värdetN/A
, vilket indikerar att ingen IP-adress har hittats ännu. Om ingen IP-adress hittas för en adapter, kommerN/A
att visas som standard.for /f
: Startar en loop som analyserar utdata frånipconfig
.tokens=2 delims=:
: Delar varje rad i två delar baserat på kolon (:
), därtokens=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 kommandotipconfig
och använderfindstr
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 omethernet_ip
fortfarande har värdetN/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) iethernet_ip
. Eftersom vi har satt villkoretif "!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