5 IF-uttalelser som skal brukes for smartere Windows Batch-skript
Hvis du gjør mye arbeid i Windows batch-filer, tilbyr IF-setningen en veldig kraftig måte å legge til fleksibilitet til skriptene dine.
I denne artikkelen skal du lære om fem hovedtyper IF-setninger du kan bruke i en Windows-batchfil, hvordan den riktige syntaksen ser ut, og et realistisk eksempel for hver.
Hvis du er klar til å begynne å skrive skript, la oss komme i gang.
1 Sammenlign verdier
En av de grunnleggende tingene du vanligvis trenger å gjøre i et batch-skript er å sammenligne to verdier og følge en annen handling avhengig av sammenligningen.
La oss for eksempel si at du vil skrive et batchskript som kontrollerer datamaskinens harddiskstørrelse daglig. Hvis det er under 3 GB, vil du ha en e-postrapport som sier "Harddiskplass for lite."
For å lage et skript som sammenligner den nåværende ledige harddiskplassen med grensen din, må du lage følgende batchskript og lagre det som en .bat-fil.
@echo offset DriveLimit=300000000for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%xEcho FreeSpace="%FreeSpace%"Echo Limit="%DriveLimit%"If %FreeSpace% GTR %DriveLimit% (Echo There is enough free space.) else (Echo Not enough free space.)
I skriptet er WMIC Windows Management Instrumentation-komponenten (WMI) i Windows som kommer med et utvalg kommandoer du kan bruke til å hente informasjon fra PC-en.
Dette er hvordan "wmic"-kommandoen i dette skriptet kaller logicaldisk space og plasserer den i FreeSpace – variabelen.
Nå kan du bare erstatte linjen Echo Ikke nok ledig plass med en kommando for å sende deg et varsel via e-post. Sett skriptet til å kjøre daglig.
2 strengsammenlikninger
En annen verdifull IF-sammenligning du kan gjøre i en batch-jobb er å sammenligne strenger.
I det følgende eksempelet vil du se hvordan du sjekker Windows-versjonen din ved hjelp av en batchjobb. Deretter kan du sammenligne dette med din forventede Windows-versjon.
Noen bruksområder for dette skriptet vil være for IT-revisjoner når du raskt må kjøre et skript og sørge for at det gjeldende operativsystemet er det nyeste eller om det trenger en oppgradering.
Slik ser dette skriptet ut:
@echo offfor /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%jif "%version%" == "6.0" echo Windows Vista.if "%version%" == "6.1" echo Windows 7if "%version%" == "6.2" echo Windows 8if "%version%" == "6.3" echo Windows 8.1if "%version%" == "10.0" echo Windows 10.
Slik ser utgangen av dette skriptet ut:
Muligheten til å sammenligne strenger i en batch åpner opp en hel liste med muligheter. Hvis du utforsker all informasjonen du kan få fra en WMIC-kommando, vil du se hvor mye statistikk om datamaskinen du kan overvåke.
Dessuten kan du til og med bruke planlagte batchjobber for å få varsler om disse.
3 Sjekk om det finnes en fil
En annen nyttig situasjon der en IF-setning i en batchfil er å sjekke om det finnes en datafil.
Mange ganger er batchjobben bare et overvåkingsverktøy som du kan planlegge for å se etter nye innkommende datafiler i en bestemt katalog. Deretter kan du enten kopiere den filen til et annet sted eller starte et Windows-skript som behandler filen til en Excel-utdata.
Det er raskt og enkelt å bruke en batchfil for å sjekke om en fil finnes i en katalog. Slik ser det skriptet ut:
@echo offif exist c:tempdatafile.txt (%WINDIR%SysWOW64cmd.exe cscript LoadToExcel.vbs) else (rem file doesn't exist)
IF EXISTS-sammenligningen er nyttig for mange ting.
Hvis du for eksempel har et system eller en applikasjon som kjører som oppretter nye feillogger i en bestemt mappe når det er et problem, kan du kjøre en batchjobb med jevne mellomrom. På denne måten kan du enkelt overvåke om det opprettes nye feillogger slik at du kan sende et varsel.
4 Sjekk om en kommando mislyktes
Et aspekt ved batch-filskripting som for få IT-folk eller programmerere bruker, er å se etter feil.
Det er mange batchjobber som flyter rundt der ute som utfører kritiske IT-oppgaver som å sikkerhetskopiere viktige filer eller kjøre filkopieringsoperasjoner. Når disse batchjobbene mislykkes, svikter systemene, og folk legger vanligvis merke til det.
Det er mye smartere å få et varsel når batchjobben din har mislyktes med en kommando før folk begynner å legge merke til det. På denne måten kan du løse problemet proaktivt.
Du kan gjøre dette ved å bruke %errorlevel%-variabelen som de fleste applikasjoner og kommandoer returnerer etter at de er kjørt. Alt du trenger å gjøre er å følge kommandoen din med kommandoen IF %ERRORLEVEL%.
@echo offxcopy C:omefolder E:backupfolderIF %ERRORLEVEL% NEQ 0 <blat command to send email>
Hvis applikasjonen eller kommandoen returnerer en null, er alt i orden. Hvis ikke, må du sende deg selv en e-post.
Du trenger imidlertid ikke ta e-postruten. Du kan alltid skrive en feillogg som du kan sjekke hver morgen, eller starte en annen applikasjon eller kommando som prøver å kopiere med en alternativ kommando.
Dessuten, hvis du heller vil bruke en IF-setning for å se etter spesifikke feilkoder, tilbyr Windows en ganske omfattende liste over systemfeilkoder.
5 Se etter manglende parametere
Den siste nyttige IF-setningen er ikke for en spesifikk kommando, men i stedet for å sjekke at skriptet mottok de riktige inngangsparametrene.
La oss for eksempel si at du har skrevet et skript som utfører en xcopy-kommando fra en inndatamappe til en felles nettverksmappe som brukes av et team. Brukeren trenger bare å følge skriptnavnet ditt med parametrene som definerer deres personlige filbane.
Du kan ikke kjøre skriptet på riktig måte uten den angitte banen, så det kan være lurt å sette en IF-setning i begynnelsen av skriptet for å sikre at begge parameterne er angitt.
@echo offIF [%1]==[] (GOTO sub_message) ELSE (xcopy %1 E:backupfolder)GOTO eof:sub_messageecho You forgot to specify your path.:eof
Hvis du aldri har brukt parametere med batchskript før, representerer prosentsymbolet etterfulgt av et tall parametervariabelen. %1 er den første parameteren, %2 er den andre, og så videre.
Generelt er IF-setninger for nyttige, og du trenger ikke skrive for mange koder for å faktisk bruke dem. Selvfølgelig, hvis du ønsker å øke det et hakk, kan du vurdere å ta en titt på VBA med vår guide for å lage din første VBA-applikasjon.
Batchjobber kan være kraftige
Mange begynte å bruke batchjobber for enkle oppgaver som må utføres sekvensielt. Heldigvis, med IF-setninger, er det mulig å legge til langt mer logikk til skriptene dine.
I tillegg kan du ofte bruke mer avanserte programmeringsspråk og bruke PowerShell til å utføre mange av de samme oppgavene du bruker batchjobber til.
