Advertentie

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

In dit artikel leert u over de vijf hoofdtypen IF-instructies die u in een Windows-batchbestand kunt gebruiken, hoe de juiste syntaxis eruitziet en een realistisch voorbeeld voor elk.

Als je klaar bent om met scripts te beginnen, gaan we aan de slag!

1. Vergelijk waarden

Een van de basisdingen die u normaal gesproken in een batch-script moet doen, is vergelijk twee waarden en volg een andere manier van handelen, afhankelijk van de vergelijking.

Stel dat u een batch-script 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 'Ruimte op harde schijf te laag'.

Om een ​​script te maken dat de huidige vrije ruimte op de harde schijf met uw limiet vergelijkt, maakt u het volgende batch-script en slaat u het op als een .bat-bestand.

@echo uit. stel DriveLimit = 300000000 in. voor / f "usebackq delims == tokens = 2" %% x in (`wmic logicaldisk waarbij" DeviceID = 'C:' "FreeSpace / format: value` krijgen) stel FreeSpace = %% x in. Echo FreeSpace = "% FreeSpace%" Echo Limit = "% DriveLimit%" Als% FreeSpace% GTR% DriveLimit% (Echo Er is voldoende vrije ruimte. ) else (Echo Te weinig vrije ruimte. )

WMIC is het Windows Management Instrumentation-onderdeel van Windows dat wordt geleverd met een assortiment opdrachten die u kunt gebruiken om pc-informatie op te halen. Zo roept de opdracht "wmic" in dit script de "logicaldisk" -ruimte op en plaatst deze in de FreeSpace-variabele. Nu kunt u gewoon de regel "Echo Onvoldoende vrije ruimte" vervangen door een duidelijke e-mailopdracht om u een waarschuwing te sturen.

Stel tot slot dit script in als een in Windows geplande batchtaak die dagelijks wordt uitgevoerd.

Als je nog nooit blat hebt gebruikt, hebben we een artikel dat je laat zien hoe blat in te stellen. Onbekend met het opzetten van geplande taken? We hebben je gedekt met een artikel over hoe u geplande taken in Windows instelt 4 saaie taken die u kunt automatiseren met de Windows Task SchedulerJe tijd is te waardevol om te verspillen aan repetitieve taken. Laat ons u laten zien hoe u taken kunt automatiseren en plannen. We hebben ook een paar geweldige voorbeelden. Lees verder .

2. String vergelijkingen

Een andere waardevolle IF-vergelijking die u in een batchopdracht kunt doen, is snaren vergelijken.

In het volgende voorbeeld ziet u hoe u uw Windows-versie kunt controleren met 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 het nieuwste is, of dat het een upgrade nodig heeft.

Zo ziet dit script eruit.

@echo uit. voor / f "tokens = 4-5 delims =. "%% i in ('ver') stelt VERSION = %% i. %% j in. als "% version%" == "6.0" een echo is van Windows Vista. als "% version%" == "6.1" een echo is van Windows 7. als "% version%" == "6.2" een echo is van Windows 8. als "% version%" == "6.3" een echo is van Windows 8.1. als "% version%" == "10.0" een echo is van Windows 10. 

Dit is hoe de uitvoer van dit script eruit ziet.

Batchbestand, Windows, programmeren

De mogelijkheid om strings in batch te vergelijken, opent een hele lijst met mogelijkheden. Als je alle informatie die u uit een WMIC-opdracht kunt halen ziet u hoeveel statistieken over uw computer u kunt controleren. U kunt geplande batchtaken gebruiken om hierop te waarschuwen.

3. Controleer of een bestand bestaat

Een andere nuttige situatie waarbij een IF-instructie in een batchbestand is controleer op het bestaan ​​van een gegevensbestand.

Vaak is de batchtaak slechts een bewakingsprogramma dat 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 verwerkt tot een Excel-uitvoer.

(We hebben in het verleden geschreven over hoe gebruik Windows-scripts voor het verwerken van gegevens naar een Excel-bestand 5 Handige VB Windows-scripts om uw computergebruik te automatiserenVan website monitoring tot systeemrapporten, leer hoe u alles kunt automatiseren met deze geweldige VB-scripts die u nu in Windows kunt coderen. Lees verder ; wat goede achtergrondlezing.)

Het is snel en gemakkelijk om een ​​batchbestand te gebruiken om te controleren of een bestand in een directory bestaat. Zo ziet dat script eruit.

@echo uit. indien aanwezig c: \ temp \ datafile.txt (% WINDIR% \ SysWOW64 \ cmd.exe cscript LoadToExcel.vbs. ) else (rem-bestand bestaat niet. )

De IF EXISTS-vergelijking is nuttig voor veel dingen.

Als u bijvoorbeeld een systeem of toepassing heeft die nieuwe foutlogboeken maakt in een specifieke map wanneer die er is een probleem is, kunt u af en toe een batchtaak uitvoeren om te controleren of er nieuwe foutlogboeken worden gemaakt, zodat u een kunt verzenden alert.

4. Controleer of een opdracht is mislukt

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

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

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

U kunt dit doen door de% errorlevel% -variabele 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 het commando een nul heeft geretourneerd, is alles in orde. Zo niet, dan moet u uzelf een e-mail sturen.

@echo uit. xcopy C: \ somefolder E: \ backupfolder. ALS% ERRORLEVEL% NEQ 0 

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

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

5. Controleer op ontbrekende parameters

De laatste nuttige IF-instructie is geen specifieke opdracht, maar om te controleren of het script de juiste invoerparameters ontvangen.

Stel dat u een script heeft geschreven dat een xcopy-opdracht uitvoert vanuit een invoermap naar een algemene netwerkmap die door een team wordt gebruikt. De gebruiker hoeft alleen 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-instructie aan het begin van uw script plaatsen om er zeker van te zijn dat beide parameters zijn ingevoerd.

Zo ziet dat eruit.

@echo uit. ALS [% 1] == [] ( GOTO sub_message. ) ANDERS ( xcopy% 1 E: \ backupfolder. ) GOTO eof.: subbericht. echo U bent vergeten uw pad op te geven.: eof.

Als u nog nooit eerder parameters met batch-scripts hebt gebruikt, vertegenwoordigt het procentteken gevolgd door een getal de parametervariabele. % 1 is de eerste parameter,% 2 is de tweede, enzovoort.

Batchopdrachten kunnen krachtig zijn

Veel mensen gebruiken batchtaken voor eenvoudige taken die achtereenvolgens moeten worden uitgevoerd. Met IF-statements is het mogelijk om veel meer intelligentie aan uw scripts toe te voegen.

Natuurlijk, als je het echt een stapje hoger wilt zetten, kun je overwegen om VBA te bekijken met onze gids erop het maken van uw eerste VBA-applicatie, of misschien zelfs leren programmeren in Python.

U kunt vaak meer geavanceerde programmeertalen zoals deze gebruiken, of leer PowerShell te gebruiken 5 redenen waarom u PowerShell zou moeten gebruiken in plaats van Batch ScriptingPowerShell is wat je zou krijgen als je de opdrachtprompt met Batch Scripting zou kruisen, wat extra functies zou toevoegen en het een aantal keer beter zou doen. Hier zijn verschillende redenen om het te proberen. Lees verder , om veel van dezelfde taken uit te voeren waarvoor u momenteel batchtaken gebruikt.

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