5 IF-statements om te gebruiken voor slimmere Windows-batchscripts

5 IF-statements om te gebruiken voor slimmere Windows-batchscripts

Als u veel werk doet in Windows-batchbestanden, IF-verklaring biedt een zeer krachtige manier om flexibiliteit aan uw scripts toe te voegen.





In dit artikel leer je over de vijf belangrijkste typen IF-instructies die je in een Windows-batchbestand kunt gebruiken, hoe de juiste syntaxis eruitziet en een realistisch voorbeeld voor elk.





Als je klaar bent om te beginnen met scripten, laten we dan beginnen!





1. Vergelijk waarden

Een van de basisdingen die u gewoonlijk in een batchscript moet doen, is: vergelijk twee waarden en volg een andere handelwijze, afhankelijk van de vergelijking.

Stel dat u bijvoorbeeld een batchscript wilt schrijven dat dagelijks de grootte van de harde schijf van uw computer controleert. Als het minder dan 3 GB is, wilt u een e-mailrapport ontvangen met de tekst 'Hard Drive Space Too Low'.



Als u een script wilt maken dat de huidige vrije ruimte op de harde schijf vergelijkt met uw limiet, maakt u het volgende batchscript en slaat u het op als een .bat-bestand.

@echo off
set DriveLimit=300000000
for /f 'usebackq delims== tokens=2' %%x in (`wmic logicaldisk where 'DeviceID='C:'' get FreeSpace /format:value`) do set FreeSpace=%%x
Echo FreeSpace='%FreeSpace%'
Echo Limit='%DriveLimit%'
If %FreeSpace% GTR %DriveLimit% (
Echo There is enough free space.
) else (
Echo Not enough free space.
)

WMIC is de Windows Management Instrumentation-component van Windows die wordt geleverd met een assortiment opdrachten die u kunt gebruiken om pc-informatie op te halen. Dit is hoe het 'wmic'-commando in dit script de 'logicaldisk'-ruimte aanroept en in de FreeSpace-variabele plaatst. Nu kun je de regel 'Echo Niet genoeg vrije ruimte' vervangen door een blat-e-mailopdracht om je een waarschuwing te sturen.





Stel ten slotte dit script in als een geplande batchtaak van Windows die dagelijks wordt uitgevoerd.

Als je nog nooit blat hebt gebruikt, hebben we een artikel dat je laat zien hoe je blat instelt. Niet bekend met het instellen van geplande taken? We hebben een artikel voor u over het instellen van geplande Windows-taken.





2. Snaarvergelijkingen

Een andere waardevolle IF-vergelijking die u in een batchtaak kunt doen, is: strings vergelijken .

In het volgende voorbeeld ziet u hoe u uw Windows-versie kunt controleren met behulp van een batchtaak. Dan kun je dit vergelijken met je verwachte Windows-versie.

Sommige toepassingen van dit script zijn voor IT-audits wanneer u snel een script moet uitvoeren en ervoor moet zorgen dat het huidige besturingssysteem de nieuwste is, of als het een upgrade nodig heeft.

Dit is hoe dit script eruit ziet.

@echo off
for /f 'tokens=4-5 delims=. ' %%i in ('ver') do set VERSION=%%i.%%j
if '%version%' == '6.0' echo Windows Vista.
if '%version%' == '6.1' echo Windows 7
if '%version%' == '6.2' echo Windows 8
if '%version%' == '6.3' echo Windows 8.1
if '%version%' == '10.0' echo Windows 10.

Dit is hoe de uitvoer van dit script eruit ziet.

De mogelijkheid om strings in batch te vergelijken opent een hele lijst aan mogelijkheden. Als je alle informatie die u kunt verkrijgen uit een WMIC-opdracht u zult zien hoeveel statistieken over uw computer u kunt controleren. U kunt geplande batchtaken gebruiken om hierover te waarschuwen.

3. Controleer of er een bestand bestaat

Een andere handige situatie waarbij een IF-statement in een batchbestand moet: controleer op het bestaan ​​van een gegevensbestand .

Vaak is de batchtaak slechts een controletool die kan worden gepland om te controleren op nieuwe binnenkomende gegevensbestanden in een specifieke map.

Vervolgens kan de batchtaak dat bestand kopiëren naar een andere locatie waar het kan worden verwerkt, of een Windows-script starten dat het bestand in een Excel-uitvoer verwerkt.

(We hebben in het verleden geschreven over hoe u moet) Windows-scripts gebruiken voor het verwerken van gegevens naar een Excel-bestand ; wat goede achtergrondinformatie.)

Het gebruik van een batchbestand om te controleren of een bestand in een directory bestaat, is snel en eenvoudig. Dit is hoe dat script eruit ziet.

@echo off
if exist c: empdatafile.txt (
%WINDIR%SysWOW64cmd.exe
cscript LoadToExcel.vbs
) else (
rem file doesn't exist
)

De IF EXISTS-vergelijking is voor veel dingen nuttig.

Als u bijvoorbeeld een systeem of toepassing hebt die nieuwe foutenlogboeken aanmaakt in een specifieke map wanneer er een probleem is, kunt u af en toe een batchtaak uitvoeren om te controleren of er nieuwe foutenlogboeken worden gemaakt, zodat u een waarschuwing kunt sturen.

4. Controleer of een opdracht is mislukt

Een aspect van batchbestand-scripting dat te weinig IT-mensen of programmeurs gebruiken, is: controleren op fouten .

Er zweven veel batchtaken rond die kritieke IT-taken uitvoeren, zoals het maken van back-ups van belangrijke bestanden of het uitvoeren van bestandskopieerbewerkingen. Wanneer deze batchtaken mislukken, falen systemen en merken mensen dat.

Het is veel slimmer om een ​​waarschuwing te krijgen wanneer een opdracht voor uw batchtaak is mislukt voordat mensen beginnen het te merken. Op deze manier kunt u het probleem proactief oplossen.

U kunt dit doen door de variabele %errorlevel% te gebruiken die de meeste toepassingen en opdrachten retourneren nadat ze zijn uitgevoerd.

Het enige dat u hoeft te doen, is uw opdracht volgen met de opdracht IF %ERRORLEVEL%. Als de toepassing of opdracht een nul heeft geretourneerd, is alles in orde. Zo niet, dan moet je jezelf een e-mail sturen.

@echo off
xcopy C:
omefolder E:ackupfolder
IF %ERRORLEVEL% NEQ 0

U hoeft niet de e-mailroute te nemen. U kunt altijd een foutenlogboek schrijven dat u elke ochtend kunt controleren, of een tweede toepassing of opdracht starten die probeert de kopie uit te voeren met een alternatieve opdracht. Welke actie u ook wilt ondernemen, IF %ERRORLEVEL% laat u het doen.

Als u liever een IF-statement gebruikt om te controleren op specifieke foutcodes, biedt Windows een mooie uitgebreide lijst met foutcodes .

5. Controleer op ontbrekende parameters

Het laatste nuttige IF-statement is geen specifiek commando, maar om te controleren of het script de juiste invoerparameters ontvangen .

Stel dat u bijvoorbeeld een script hebt geschreven dat een xcopy-opdracht uitvoert vanuit een invoermap naar een algemene netwerkmap die door een team wordt gebruikt. De gebruiker hoeft alleen maar uw scriptnaam te volgen met de parameters die hun persoonlijke bestandspad definiëren.

Het is duidelijk dat u uw script niet correct kunt uitvoeren zonder het opgegeven pad, dus u kunt een IF-statement aan het begin van uw script plaatsen om er zeker van te zijn dat beide parameters zijn ingevoerd.

Hier is hoe dat eruit ziet.

@echo off
IF [%1]==[] (
GOTO sub_message
) ELSE (
xcopy %1 E:ackupfolder
)
GOTO eof
:sub_message
echo You forgot to specify your path.
:eof

Als u nog nooit eerder parameters met batchscripts hebt gebruikt, staat het procentteken gevolgd door een getal voor de parametervariabele. %1 is de eerste parameter, %2 is de tweede, enzovoort.

Batchtaken kunnen krachtig zijn

Veel mensen beginnen batchtaken te gebruiken voor eenvoudige taken die in volgorde moeten worden uitgevoerd. Met IF statements is het mogelijk om veel meer intelligentie aan je scripts toe te voegen.

Natuurlijk, als je echt een tandje bij wilt zetten, kun je overwegen om VBA te bekijken met onze gids op uw eerste VBA-toepassing maken , of misschien zelfs Python leren programmeren .

U kunt vaak meer geavanceerde programmeertalen zoals deze gebruiken, of PowerShell leren gebruiken om veel van dezelfde taken uit te voeren waarvoor u momenteel batchtaken gebruikt.

Deel Deel Tweeten E-mail Verwijder deze Windows-bestanden en -mappen om schijfruimte vrij te maken

Wilt u schijfruimte op uw Windows-computer vrijmaken? Hier zijn de Windows-bestanden en -mappen die veilig kunnen worden verwijderd om schijfruimte vrij te maken.

Lees volgende
Gerelateerde onderwerpen
  • ramen
  • Programmeren
  • ramen
Over de auteur Ryan Dube(942 artikelen gepubliceerd)

Ryan heeft een BSc-graad in Elektrotechniek. Hij heeft 13 jaar in de automatiseringstechniek gewerkt, 5 jaar in de IT en is nu een Apps Engineer. Als voormalig hoofdredacteur van MakeUseOf heeft hij gesproken op nationale conferenties over datavisualisatie en is hij te zien geweest op nationale tv en radio.

heb je een muismat nodig om te gamen?
Meer van Ryan Dube

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren