
Michael Fisher
0
1521
165
Hvis du udfører en masse arbejde i Windows-batchfiler, skal 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, 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 nuværende ledige harddiskplads med din grænse, skal du oprette følgende batch-script og gemme det som en .bat-fil.
@echo off set 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.) ellers (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. Dette er, hvordan “wmic” kommandoen i dette script kalder “logicaldisk” plads og placerer den i FreeSpace-variablen. Nu kan du bare udskifte linjen “Ekko Ikke nok ledig plads” med en blat e-mail-kommando for at sende dig en advarsel.
Endelig skal du konfigurere 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 du indstiller blat. Er du ikke bekendt med at indstille planlagte job? Vi har fået dig dækket med en artikel om, hvordan du konfigurerer Windows-planlagte opgaver 4 Kedelige opgaver, du kan automatisere med Windows-opgaveskemaet 4 Kedelige opgaver, du kan automatisere med Windows-opgaveskemaet. Din tid er for værdifuld til at være spildt med gentagne opgaver . Lad os vise dig, hvordan du automatiserer og planlægger opgaver. Vi har også et par gode eksempler. .
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 kan du se, 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 off for / f "tokens = 4-5 delims =." %% i i ('ver') indstiller VERSION = %% i. %% j hvis "% version%" == "6.0" ekko Windows Vista . hvis "% version%" == "6.1" gentager Windows 7, hvis "% version%" == "6.2" ekko 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 de oplysninger, du kan få ud af 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.
Mange gange er batchjobbet bare et overvågningsværktøj, der muligvis er planlagt til at tjekke for nye indkommende 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-udgang.
(Vi har skrevet i fortiden om, hvordan du bruger Windows-scripts til behandling af data til en Excel-fil. 5 Nyttige VB Windows-scripts til at automatisere din computerbrug for at automatisere alle tingene med disse fantastiske VB-scripts, som du kan kode i Windows lige nu.; 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 off hvis 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 er et problem, kan du køre et batchjob så ofte for at overvåge, om der oprettes nye fejllogger, så du kan sende en advarsel.
4. Kontroller, om en kommando mislykkedes
Et aspekt af scripting af batchfiler, 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 undladt 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 variablen% errorlevel%, 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 off xcopy C: \ somefolder E: \ backupfolder IF% 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 temmelig 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 for eksempel 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 off IF [% 1] == [] (GOTO sub_message) ELSE (xcopy% 1 E: \ backupfolder) GOTO eof: sub_message echo Du har glemt at specificere din sti. : eof
Hvis du aldrig tidligere har brugt parametre med batch-scripts, 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 oprettelse af din første VBA-applikation, eller måske endda lære 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-scripting 5 grunde til at du skal bruge PowerShell i stedet for batch-scripting PowerShell er det, 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. , for at udføre mange af de samme opgaver, som du i øjeblikket bruger batchjob til.