Batch script loopar

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