Reklame
Hvis du udfører en masse arbejde i Windows-batchfiler, IF erklæring tilbyder en meget kraftfuld måde at tilføje fleksibilitet til dine scripts.
I denne artikel skal du lære om de fem hovedtyper af IF-udsagn, du kan bruge i en Windows-batchfil, hvordan den rigtige syntaks ser ud, og et realistisk eksempel for hver.
Hvis du er klar til at starte scripting, så lad os komme i gang!
1. Sammenlign værdier
En af de grundlæggende ting, du normalt skal gøre i et batch-script, er sammenligne to værdier og følg et andet handlingsforløb afhængigt af sammenligningen.
Lad os for eksempel sige, at du ville skrive et batch-script, der kontrollerer din computers harddiskstørrelse dagligt. Hvis det er under 3 GB, ønsker du at få en e-mail-rapport, der siger "Harddiskplads for lav."
For at oprette et script, der sammenligner den aktuelle ledige harddiskplads med din grænse, skal du oprette følgende batch-script og gemme det som en .bat-fil.
@echo slukket. indstil DriveLimit = 300000000. for / f "usebackq delims == tokens = 2" %% x in (`wmic logicaldisk hvor" DeviceID = 'C:' "få FreeSpace / format: value") sæt FreeSpace = %% x. Echo FreeSpace = "% FreeSpace%" Echo Limit = "% DriveLimit%" Hvis% FreeSpace% GTR% DriveLimit% (Echo Der er nok ledig plads. ) andet (Echo Ikke nok ledig plads. )
WMIC er Windows Management Instrumentation-komponenten i Windows, der leveres med et udvalg af kommandoer, du kan bruge til at trække pc-oplysninger. Sådan kaldes “wmic” -kommandoen i dette script “logicaldisk” -rummet og placerer det i FreeSpace-variablen. Nu kan du bare erstatte linjen "Echo Not nok ledig plads" med en blat e-mail-kommando for at sende dig en advarsel.
Til sidst skal du oprette dette script som et planlagt batchjob i windows, der kører dagligt.
Hvis du aldrig har brugt blat før, har vi en artikel, der viser dig hvordan man indstiller blat. Er du ikke bekendt med at indstille planlagte job? Vi har fået dig dækket med en artikel om hvordan man konfigurerer Windows planlagte opgaver 4 Kedelige opgaver, du kan automatisere med Windows-opgaveskemaetDin tid er for værdifuld til at blive spildt med gentagne opgaver. Lad os vise dig, hvordan du automatiserer og planlægger opgaver. Vi har også et par gode eksempler. Læs mere .
2. String-sammenligninger
En anden værdifuld IF-sammenligning, du kan gøre i et batchjob, er sammenligning af strenge.
I det følgende eksempel ser du, hvordan du kontrollerer din Windows-version ved hjælp af et batchjob. Derefter kan du sammenligne dette med din forventede Windows-version.
Nogle anvendelser af dette script vil være til IT-revisioner, når du hurtigt skal køre et script og sikre dig, at det nuværende operativsystem er det nyeste, eller om det har brug for en opgradering.
Sådan ser dette script ud.
@echo slukket. for / f "tokens = 4-5 delims =. "%% i i ('ver') indstiller VERSION = %% i. %% j. hvis "% version%" == "6.0" gentager Windows Vista. hvis "% version%" == "6.1" gentager Windows 7. hvis "% version%" == "6.2" gentager Windows 8. hvis "% version%" == "6.3" gentager Windows 8.1. hvis "% version%" == "10.0" gentager Windows 10.
Sådan ser output af dette script ud.

Evnen til at sammenligne strenge i batch åbner en hel liste over muligheder. Hvis du udforsker alle oplysninger, du kan få fra en WMIC-kommando kan du se, hvor mange statistikker om din computer du kan overvåge. Du kan bruge planlagte batchjob til at advare om disse.
3. Kontroller, om der findes en fil
En anden nyttig situation, hvor en IF-erklæring i en batchfil er Kontroller, om der findes en datafil.
Batchjobbet er mange gange bare et overvågningsværktøj, der muligvis er planlagt til at tjekke for nye indgående datafiler i et specifikt bibliotek.
Derefter kan batchjobbet enten kopiere den fil til et andet sted, hvor den kan behandles, eller sparkes fra et windows-script, der behandler filen til en Excel-output.
(Vi har skrevet i fortiden om, hvordan man gør det Brug Windows-scripts til behandling af data til en Excel-fil 5 Nyttige VB-Windows-scripts til at automatisere din computerbrugFra webstedsovervågning til systemrapporter, lær hvordan du automatiserer alle tingene med disse fantastiske VB-scripts, du kan kode i Windows lige nu. Læs mere ; nogle god baggrundslæsning.)
Brug af en batchfil til at kontrollere, om en fil findes i et bibliotek, er hurtigt og nemt. Sådan ser scriptet ud.
@echo slukket. hvis der findes c: \ temp \ datafile.txt (% WINDIR% \ SysWOW64 \ cmd.exe cscript LoadToExcel.vbs. ) andet (rem-fil findes ikke. )
IF EXISTS-sammenligningen er nyttig til mange ting.
For eksempel hvis du har et system eller en applikation, der kører, der opretter nye fejllogfiler i en bestemt mappe, når der findes et problem, du kan køre et batchjob så ofte for at overvåge, om der oprettes nye fejllogger, så du kan sende en alert.
4. Kontroller, om en kommando mislykkedes
Et aspekt af batchfilscripting, som for få it-folk eller programmerere bruger, er tjekker for fejl.
Der flyver mange batchjob derude, der udfører kritiske it-opgaver som at tage sikkerhedskopi af vigtige filer eller køre filkopiering. Når disse batchjob mislykkes, mislykkes systemer, og folk bemærker det.
Det er meget smartere at få en advarsel, når dit batchjob ikke har fået en kommando Før folk begynder at bemærke. På denne måde kan du løse problemet proaktivt.
Du kan gøre dette ved at bruge den% errorlevel% variabel, som de fleste applikationer og kommandoer returnerer efter, at de er kørt.
Alt hvad du skal gøre er at følge din kommando med kommandoen IF% ERRORLEVEL%. Hvis applikationen eller kommandoen returnerede et nul, er alt i orden. Hvis ikke, skal du sende dig en e-mail.
@echo slukket. xcopy C: \ somefolder E: \ backupfolder. HVIS% ERRORLEVEL% NEQ 0
Du behøver ikke at tage e-mail-ruten. Du kan altid skrive en fejllogg, som du muligvis kan tjekke hver morgen, eller starte et andet program eller kommando, der forsøger at udføre kopien ved hjælp af en alternativ kommando. Uanset hvilken handling du vil tage, IF% ERRORLEVEL% lader dig gøre det.
Hvis du hellere vil bruge en IF-sætning til at kontrollere for specifikke fejlkoder, tilbyder Windows en smuk omfattende liste over fejlkoder.
5. Kontroller, om der mangler parametre
Den sidste nyttige IF-erklæring er ikke en bestemt kommando, men i stedet for at kontrollere, at scriptet modtog de relevante inputparametre.
Lad os f.eks. Sige, at du har skrevet et script, der udfører en xcopy-kommando fra en inputmappe, til en fælles netværksmappe, der bruges af et team. Brugeren skal bare følge dit scriptnavn med parametrene, der definerer deres personlige filsti.
Det er klart, at du ikke kan udføre dit script korrekt uden den angivne sti, så du kan placere en IF-sætning i begyndelsen af dit script for at sikre dig, at begge parametre blev indtastet.
Sådan ser det ud.
@echo slukket. HVIS [% 1] == [] ( GOTO undermeddelelse. ) ELSE ( xcopy% 1 E: \ backupfolder. ) GOTO eof.: Sub_message. echo Du har glemt at specificere din sti.: EOF.
Hvis du aldrig har brugt parametre med batch-scripts før, repræsenterer procentsymbolet efterfulgt af et tal parametervariablen. % 1 er den første parameter,% 2 er den anden osv.
Batchjob kan være kraftfulde
Mange mennesker begynder at bruge batchjob til enkle opgaver, der skal udføres i rækkefølge. Med IF-udsagn er det muligt at tilføje meget mere intelligens til dine scripts.
Selvfølgelig, hvis du virkelig ønsker at øge et hak, kan du overveje at tage et kig på VBA med vores guide til oprette din første VBA-applikation, eller måske endda Lær Python programmering.
Du kan ofte bruge mere avancerede programmeringssprog som disse, eller lære at bruge PowerShell 5 grunde til, at du skal bruge PowerShell i stedet for batch-scriptingPowerShell er, hvad du ville få, hvis du krydsede Kommandoprompten med batch-scripting, kastede nogle ekstra funktioner og sparkede det hele op ad flere hak. Her er flere grunde til at du skal prøve det. Læs mere , for at udføre mange af de samme opgaver, som du i øjeblikket bruger batchjob til.
Ryan har en BSc-grad i elektroteknik. Han har arbejdet 13 år inden for automatisering, 5 år inden for it, og er nu en applikationsingeniør. En tidligere administrerende redaktør for MakeUseOf, han har talt på nationale konferencer om datavisualisering og har været vist på nationalt tv og radio.