Precis som i andra programmeringsspråk har Batch File möjlighet att exekvera kommando upprepade gånger, något som kallas loop (varv).
For loop
Här nere listas några av dessa loopar utan någon detaljerade förklaring:
- For /D – loopar genom flera kataloger, accepterar wildcards
- For /R – loopar genom huvudkatalog och underkataloger
- For /L – loopar genom ett antal specificerade numeriska intervaler
- For /F – loopar genom flera filer, kommando och strängar
För varje loop-alternativ finns flera olika variationer som inte kan tas upp här.
För att se innehållet av kataloger (om det körs för fort, avbryta kommandoutförande efter några sekunder med Ctrl+c) exekvera:
c:\>for /D %v IN (*.*) DO dir /s ”%v”
- %v är variabel
- (*.*) betyder att matchas namn för kataloger och filer
- dir /s listar ut filer i kataloger och underkataloger
Samma kod kommer inte att fungera om den körs via en Batch cript, istället kodas så här:
for /D %%v IN (*.*) DO dir /s ”%%v”
För att få fram på skärmen ett numeriskt värde som minskar med 2 enheter varje varv till den blir 2, exekvera:
c:\>for /L %g in (22,-2,2) do echo %g
Loopen FOR /F är den svårast därför att den använder flera växlingar. Vi behöver endast förstå några växlingar:
delims=xxx – definierar begränsningar
tokens=x,y,m-n – definierar vilka tokens passeras till näst varv, m-n är ett numeriskt interval
För att få fram på skärmen fyra tokens och deras värde, exekvera:
c:\>for /f ”tokens=1-4 delims=,” %a in (”Batch,File,Windows,programming”) do @echo %a %b is a %c %d
Text som visas är: Batch File is a Windows programming.
Villkorsatssen IF och IF NOT
If satsen innebär att ett eller flera villkor matchas för att utföra någon kommando. Det kan illustreras med några exempel:
Exempel 1
Öppna Notepad och skriv koden nedan. Därefter spara textdokumentet med ett lämpligt namn exempelvis if-exist.bat
@echo off
if exist C:Windows ( echo Found! ) else ( echo Not found! )
pause
Exekvera batch filen genom att skriva på kommandoprompten scriptets namn (se bilden if-exist.bat).
Exempel 2
@echo off
color a
if not exist ”c:Program FilesMozilla Firefox” (
echo Firefox is not yet installed, please install it now
) else (
echo Firefox is currently installed
)
Exempel 3
Användaren anger ett värde som antingen godkänts eller inte.
@echo off
:begin
color 17
echo Access Code:
set /p ac=
if %ac%==12345 (
echo Access Granted
) else (
echo Access Denied
goto begin
)
Pause
Förklaring:
- :begin är början av scriptet
- goto begin betyder att när raderna exekveras startas om scriptet.
- set /p promptar användare att ange ett värde
- ac= variabel i vilken lagras när användaren mattar in ett värde.
Exempel 4
När du exekverar koden nedan kommer att köras scriptet gång på gång tills du avbryter den genom att trycka samtidigt på tangenterna CTRL och C
@echo off
:: Matrix effect
color 02
:start
echo %random% %random% %random% %random% %random% %random% %random% %random% %random% %random%
goto start