Annons

Om du gör mycket arbete i Windows-batchfiler, IF uttalande erbjuder ett mycket kraftfullt sätt att lägga till flexibilitet i dina skript.

I den här artikeln kommer du att lära dig om de fem huvudtyperna av IF-uttalanden du kan använda i en Windows-batchfil, hur rätt syntax ser ut och ett realistiskt exempel för varje.

Om du är redo att börja skripta, låt oss komma igång!

1. Jämför värden

En av de grundläggande sakerna du vanligtvis behöver göra i ett batchskript är jämföra två värden och följ en annan handlingssätt beroende på jämförelsen.

Låt oss till exempel säga att du ville skriva ett batchskript som kontrollerar datorns hårddiskstorlek dagligen. Om det är mindre än 3 GB vill du få en e-postrapport som säger "hårddiskutrymme för lågt."

För att skapa ett skript som jämför det nuvarande lediga hårddiskutrymmet till din gräns, skapar du följande batchskript och sparar det som en .bat-fil.

@echo off. ställ in DriveLimit = 300000000. för / f "usebackq delims == tokens = 2" %% x in (`wmic logicaldisk där" DeviceID = 'C:' "få FreeSpace / format: value") ställer FreeSpace = %% x. Echo FreeSpace = "% FreeSpace%" Echo Limit = "% DriveLimit%" Om% FreeSpace% GTR% DriveLimit% (Echo Det finns tillräckligt med ledigt utrymme. ) annat (Echo Inte tillräckligt med ledigt utrymme. )
instagram viewer

WMIC är Windows Management Instrumentation-komponenten i Windows som kommer med ett sortiment av kommandon som du kan använda för att dra PC-information. Så här kallar "wmic" -kommandot i det här skriptet "logicaldisk" -utrymmet och placerar det i FreeSpace-variabeln. Nu kan du bara ersätta raden "Echo Inte tillräckligt med ledigt utrymme" med ett blat e-postkommando för att skicka en varning.

Slutligen ställer du in detta skript som ett schemalagt batchjobb i Windows som körs dagligen.

Om du aldrig har använt blat tidigare, har vi en artikel som visar dig hur man ställer in blat. Känner du inte till att ställa in schemalagda jobb? Vi har täckt en artikel om hur man ställer in Windows schemalagda uppgifter 4 tråkiga uppgifter som du kan automatisera med Windows-schemaläggarenDin tid är för värdefull för att slösas bort med repetitiva uppgifter. Låt oss visa dig hur du automatiserar och planerar uppgifter. Vi har några bra exempel också. Läs mer .

2. Strängjämförelser

En annan värdefull IF-jämförelse du kan göra i ett batchjobb är jämföra strängar.

I följande exempel ser du hur du kontrollerar din Windows-version med ett batchjobb. Sedan kan du jämföra detta med din förväntade Windows-version.

Vissa användningar av detta skript är för IT-granskningar när du snabbt behöver köra ett skript och se till att det nuvarande operativsystemet är det senaste eller om det behöver uppgraderas.

Så här ser skriptet ut.

@echo off. för / f "tokens = 4-5 delims =. "%% i i ('ver') ställer in VERSION = %% i. %% j. om "% version%" == "6.0" ekar Windows Vista. om "% version%" == "6.1" ekar Windows 7. om "% version%" == "6.2" ekar Windows 8. om "% version%" == "6.3" ekar Windows 8.1. om "% version%" == "10.0" ekar Windows 10. 

Så här ser utskriften från det här skriptet ut.

Batchfil, Windows, programmering

Möjligheten att jämföra strängar i batch öppnar upp en hel lista med möjligheter. Om du utforskar alla information du kan få från ett WMIC-kommando ser du bara hur många statistik om din dator du kan övervaka. Du kan använda schemalagda batchjobb för att varna om dessa.

3. Kontrollera om det finns en fil

En annan användbar situation där ett IF-uttalande i en batchfil är att kontrollera om det finns en datafil.

Många gånger är batchjobbet bara ett övervakningsverktyg som kan schemaläggas för att leta efter nya inkommande datafiler i en specifik katalog.

Sedan kan batchjobbet antingen kopiera den filen till en annan plats där den kan behandlas, eller starta av ett Windows-skript som bearbetar filen till en Excel-utgång.

(Vi har skrivit tidigare om hur man gör det använda Windows-skript för att bearbeta data till en Excel-fil 5 Användbara VB-Windows-skript för att automatisera din datoranvändningFrån webbplatsövervakning till systemrapporter, lära dig hur du automatiserar alla saker med dessa fantastiska VB-skript som du kan koda i Windows just nu. Läs mer ; lite bra bakgrundsläsning.)

Att använda en batchfil för att kontrollera om en fil finns i en katalog är snabb och enkel. Så här ser skriptet ut.

@echo off. om finns c: \ temp \ datafile.txt (% WINDIR% \ SysWOW64 \ cmd.exe cscript LoadToExcel.vbs. ) annat (rem-fil finns inte. )

IF EXISTS-jämförelsen är användbar för många saker.

Om du till exempel har ett system eller en app som kör nya felloggar i en specifik mapp när det finns ett problem, du kan köra ett batchjobb varje gång för att övervaka om nya felloggar skapas så att du kan skicka ett varna.

4. Kontrollera om en kommando misslyckades

En aspekt av skriptsatser för batchfiler som för få IT-personer eller programmerare använder är kontrollera för fel.

Det finns många batchjobb som flyter runt där som utför kritiska IT-uppgifter som säkerhetskopiering av viktiga filer eller körning av filkopiering. När dessa batchjobb misslyckas misslyckas systemen och människor märker det.

Det är mycket smartare att få en varning när ditt batchjobb har misslyckats med ett kommando innan folk börjar märka. På så sätt kan du lösa problemet proaktivt.

Du kan göra detta genom att använda variabeln% errorlevel% som de flesta applikationer och kommandon returnerar efter att de har körts.

Allt du behöver göra är att följa ditt kommando med kommandot IF% ERRORLEVEL%. Om applikationen eller kommandot returnerade noll är allt bra. Om inte, måste du skicka dig ett e-postmeddelande.

@echo off. xcopy C: \ somefolder E: \ backupfolder. OM% ERRORLEVEL% NEQ 0 

Du behöver inte ta e-postvägen. Du kan alltid skriva en fellogg som du kan kontrollera varje morgon, eller starta ett andra program eller kommando som försöker göra kopian med ett alternativt kommando. Oavsett vilken åtgärd du vill vidta, IF% ERRORLEVEL% låter dig göra det.

Om du hellre vill använda ett IF-uttalande för att kontrollera för specifika felkoder, erbjuder Windows ett vackert omfattande lista över felkoder.

5. Kontrollera om det saknas parametrar

Det senaste användbara IF-uttalandet är inte ett specifikt kommando, utan istället för att kontrollera att skriptet fick lämpliga ingångsparametrar.

Låt oss till exempel säga att du har skrivit ett skript som utför ett xcopy-kommando från en inmatningsmapp, till en gemensam nätverksmapp som används av ett team. Användaren behöver bara följa ditt skriptnamn med parametrarna som definierar deras personliga filväg.

Uppenbarligen kan du inte köra skriptet ordentligt utan den angivna sökvägen, så du kan sätta ett IF-uttalande i början av ditt skript för att se till att båda parametrarna anges.

Så här ser det ut.

@echo off. IF [% 1] == [] ( GOTO sub_message. ) ELSE ( xcopy% 1 E: \ backupfolder. ) GOTO eof.: Sub_message. echo Du har glömt att ange din sökväg.: Eof.

Om du aldrig har använt parametrar med batchskript tidigare representerar procentsymbolen följt av ett nummer parametervariabeln. % 1 är den första parametern,% 2 är den andra, och så vidare.

Batchjobb kan vara kraftfulla

Många börjar använda batchjobb för enkla uppgifter som måste utföras i följd. Med IF-uttalanden är det möjligt att lägga till mycket mer intelligens till dina skript.

Naturligtvis om du verkligen vill förstärka det, kan du överväga att titta på VBA med vår guide om skapa din första VBA-applikation, eller kanske till och med lära sig Python-programmering.

Du kan ofta använda mer avancerade programmeringsspråk som dessa, eller lära sig att använda PowerShell 5 skäl till att du ska använda PowerShell istället för batch scriptingPowerShell är vad du skulle få om du korsade Command Prompt med Batch Scripting, kastade in några extra funktioner och sparkade allt upp flera hack. Här är flera skäl till att du bör prova det. Läs mer , för att utföra många av samma uppgifter som du för närvarande använder batchjobb för.

Ryan har en kandidatexamen i elektroteknik. Han har arbetat 13 år inom automationsteknik, 5 år inom IT och är nu en applikationsingenjör. Han var tidigare chefredaktör för MakeUseOf och talade vid nationella konferenser om datavisualisering och har varit med på nationell TV och radio.