Innehållsförteckning:

Batchfiler: Några grunder ..: 8 steg
Batchfiler: Några grunder ..: 8 steg

Video: Batchfiler: Några grunder ..: 8 steg

Video: Batchfiler: Några grunder ..: 8 steg
Video: Batchfilstruktur och inställningsmetod 2024, November
Anonim
Batchfiler: Några grunder …
Batchfiler: Några grunder …

Denna instruktionsbok lär dig några grunderna för att skriva batchfiler och visar dig hur du skapar ett gissningsspel med ett par vändningar, bara för att hålla saker intressanta …

Jag har lärt mig de flesta av mina kommandotolkskunskaper, och allt mitt batchskrivande från internet i allmänhet, och Instuctables i synnerhet. Jag skulle vilja tacka Instructables -användaren Neodudeman för hans fantastiska instruktioner om batchskrivning. Tack!

Steg 1: Vad är en batchfil?

Vad är en batchfil?
Vad är en batchfil?

Tja, de flesta av mina läsare vet nog redan vad en batchfil är, men för säkerhets skull ….

En batchfil är helt enkelt en samling (batch) av MSDOS -kommandon som körs sekventiellt när du kör batchfilen. Batchfiler startar som.txt -filer i anteckningsblock och blir körbara filer när du sparar dem som något med en.bat -tillägg. Så i princip är det bara att skriva en fil i Anteckningar och sedan spara den som, säg "instructable.bat". När.bat har placerats i slutet av filnamnet kommer en fin ny fil att dyka upp, med namnet vad du än namngav den, med en snygg, kugghjulsikon. Okej, nu när vi vet vad dessa batchfiler är, låt oss börja skriva!

Steg 2: Grundläggande kommandon

Grundläggande kommandon
Grundläggande kommandon
Grundläggande kommandon
Grundläggande kommandon
Grundläggande kommandon
Grundläggande kommandon
Grundläggande kommandon
Grundläggande kommandon

Okej, du kommer att behöva lära dig några kommandon. Så först öppnar du kommandotolken MSDOS. Öppna startfönstret, klicka på kör, skriv "cmd.exe" och klicka sedan på run. Okay. Först ska vi titta på variabler. Variabler är siffror, ord eller andra saker som (något uppenbart) varierar. Kommandotolken har en variabel funktion. Den har några variabler som redan är inställda, till exempel TIME, DATE och några andra. De flesta variabler kan du dock ställa in själv. Klicka på kommandotolken och skriv: SET variabel = randomIt spelar egentligen ingen roll om du använder "SET" eller inte, men jag gillar att använda alla mina kommandon, särskilt när jag skriver batchfiler. Det gör det bara lättare att berätta vad du gör. Tryck nu på enter. Bra för dig! Du har ställt in din första variabel! Men vad kan vi göra med det? vem bryr sig om allt vi kan göra är att ställa in variabeln rätt? Som det visar sig kan vi göra mycket mer än så, men låt oss först försöka få datorn att berätta för oss vad variabeln är inställd på. Okej, för att få datorn att läsa värdet på en variabel skriver vi namnet på variabeln, i det här fallet "variabel" och sätter namnet inuti %mark, så här: %variable %. Skriv in det och tryck enter:%variable%konstigt fel va? Datorn sa att "variabel" inte känns igen som ett internt eller externt kommando, ett operativt program eller en batchfil. " Så varför gav det det felet? Tja, i princip gav det det felet eftersom kommandotolken behandlar värdet på den variabeln som om du skrev det i dig själv. Så när du skrev %variable %trodde datorn att du sa till den att köra kommandot "random". Uppenbarligen behöver vi något annat för att se värdet på vår variabel. Det är här ECHO -kommandot kommer in. ECHO -kommandot säger helt enkelt kommandotolken att eka eller säga vad du än skrev efter ECHO. Så om vi skriver ECHO -kommandot före vår variabel bör vi få vad vi vill: ECHO %variable %There! Nu har vi fått vad vi vill! Datorn skriver ut "slumpmässigt". Uppenbarligen var detta värdet vi skrev för vår variabel, så det är resultatet vi ville ha. I nästa steg lär vi oss mer om variabler och hur vi kan använda dem.

Steg 3: Använda SET -kommandot och variablerna

Använda SET -kommandot och variablerna
Använda SET -kommandot och variablerna
Använda SET -kommandot och variablerna
Använda SET -kommandot och variablerna

Okej, nu när vi vet vad variabler är, vad mer kan vi göra med dem? Tja, vi kan räkna, vi kan använda dem som villkor för att skriva program och batchfiler, vi kan utföra grundläggande aritmetik, vi kan utföra kommandon och så mycket mer. Vi kommer inte att gå in på allt du kan göra med variabler, men vi kommer att diskutera några viktiga aspekter av variabelns funktion. Först producerar SET -kommandot i sig bara strängvariabler. Det betyder att det inte kommer att lägga till eller göra någon annan matematik. Om du skulle säga till datorn att lägga till 1 till en variabel med värdet 1, skulle det ge dig värdet 1+1. Om vi vill att den faktiskt ska lägga till de två talen måste vi placera en "/a" efter SET -kommandot. Därför skriver vi: SET /a varible = (värde) Antag nu att vi vill lägga en variabel i vår batchfil som användaren kommer att tillhandahålla. Vi kanske vill göra detta om vi beräknade värden enligt en formel, eller, i vårt fall, om vi vill att användaren ska gissa ett tal som datorn har kommit fram till. För att generera en användarspecificerad variabel lägger vi till a /p efter SET -kommandot, och vi lämnar området efter = tomt: SET /p -variabel = Där går du! En användarspecifik variabel! Om vi skulle lägga den här raden i en batchfil, körs batchen tills den når den här raden, och sedan väntar den på användarinmatning innan den fortsätter. Den andra häftiga saken med /p är att det helt förnekar /a. När vi inkluderar a /p kan vi bara utelämna /a. Nästa sak lär vi oss om att producera slumpmässiga variabler. Om vi vill att datorn ska välja ett slumpmässigt tal för en variabel skriver vi helt enkelt SET -kommandot, följt av variabeln och ställer sedan in variabeln till %RANDOM %. Återigen behöver det inte vara kapital, men jag gillar att göra det ändå. Så vi skriver: SET /a variabel =%RANDOM%Uppenbarligen är detta inte en användarspecifik variabel, så vi inkluderar /a. Häftigt! Så nu vet vi hur man producerar ett slumpmässigt tal! Men hur slumpmässigt är det? Tja, det visar sig att datorn väljer ett tal mellan 0 och någonstans runt 37 000. Jag är inte säker på vad det exakta talet är. Men vad händer om vi vill ha ett mindre antal? Anta att vi, precis som i denna instruktionsbok, vill ha ett hanterbart antal för något som gissningsspel? Tja, det är där IF -kommandot kommer in ….

Steg 4: IF- och GOTO -kommandona. Kraft i händerna på satsförfattaren

IF- och GOTO -kommandona. Kraft i händerna på satsförfattaren
IF- och GOTO -kommandona. Kraft i händerna på satsförfattaren

Så vi vill ta fram ett hanterbart antal. Låt oss anta att vi vill producera ett slumpmässigt tal mellan 1 och 20. Okej, det är lätt att säga, men RANDOM -värdet väljer ett tal mellan 1 och 37 000. Det är det vi ska använda IF för. IF -kommandot säger i princip OM något händer, eller OM något är lika med, eller inte är lika med, ett visst värde, gör SÅ DETTA. Så IF ställer villkorade kommandon. Vi vill producera ett tal som är mindre än tjugo, men större än ett, uppenbarligen börjar vi med att berätta för datorn att välja ett slumpmässigt tal, men sedan måste vi kunna berätta det för att välja ett nytt nummer om det nummer det väljer inte passar våra krav. Det är där GOTO -kommandot kommer in. GOTO säger helt enkelt till datorn att GÅ TILL en viss etikett i koden. Etiketter ser ut så här:: pickAll ord som placeras efter ett kolon blir en etikett som vi kan komma åt med kommandot GOTO. Så om vi vill gå till avsnittet med kod med etiketten "plocka" ovanför, skriver vi helt enkelt: GOTO pickAlright, så låt oss fortsätta med vår kodning. Vi har redan sagt åt datorn att välja ett slumpmässigt tal, så vi har skrivit: SET /a answer =%RANDOM%Nu vill vi dra ner det här numret till ett mindre intervall. Så vi åberopar IF -kommandot. Något sådant borde göra susen: IF % answer % GTR 20 GOTO pickDetta säger till datorn att GOTO plocka OM svaret är större än 20. Vi kan också sätta något av dessa villkor på det IF -kommandot: EQU - EqualNEQ - Not EqualLSS - Less ThanGTR - Greater ThanLEQ - Less Than or Equal ToGEQ - Greater Than or Equal ToThis, med IF, GOTO, etiketter och dessa förkortningar kan vi manipulera vår batchfil hur som helst vi väljer. Okej, så vi har vårt slumpmässiga tal under tjugo nu, och här är vad vi har hittills:: pickSET /a answer =%RANDOM%IF%answer%GTR 20 GOTO pickNow, låt oss se till att datorn inte t välj 0 för svaret.:pickSET /a answer =%RANDOM%IF%answer%GTR 20 GOTO pickIF $ answer%EQU 0 GOTO pickOkay! Nu har vi ett användbart nummer mellan 1 och 20. Låt oss gå vidare till köttet av satsen.

Steg 5: Köttet i vårt spel

Köttet i vårt spel
Köttet i vårt spel

Okej, vi har vårt slumpmässiga nummer. Vi vill också räkna hur många gissningar vår spelare gör, så vi ställer in en annan variabel: SET /a guessnum = 0Det sätter geussnumvariabeln till noll, och vi gav den /a -parametern, så vi kan lägga till till det varje gång användaren gissar. Okej. Vi har ett slumpmässigt tal och vi har satt antalet gissningar. Nu behöver vi några instruktioner, och vi måste ha lite användarinmatning för gissningsnumret. Du borde förstå det mesta vid det här laget, så jag visar bara koden:: beginECHO Jag tänker på ett nummerECHO jag tänker ….. SET /a GuessNum = 0 (Denna ECHOs dessa två rader och ställer in antalet gissningar till 0): pickASET /a Answer =%RANDOM%IF%Answer%GTR 20 GOTO pickAIF%Answer%EQU 0 GOTO pickAECHO Jag tänker på ett tal mellan 1 och 20ECHO Gissa vilket nummer jag tänker (Det här avsnittet slingrar tills det SET vårt slumpmässiga nummer och sedan ECHO instruktionerna för vår spelare): RetrySET /p Guess = IF %Guess %LSS %Answer %ECHO My Number is Higher. IF %Guess %GTR %Answer % ECHO Mitt nummer är lägre. IF%Gissa%==%Svara%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Försök igen (Det här avsnittet uppmanar datorn att be om användarinmatning och slingar sedan kontinuerligt tills användaren väljer den sedan går det till etiketten END): ENDECHO Du har rätt! Svaret var %Answer %ECHO Det tog %GuessNum %Guesses. ECHO. PAUSECLSECHO Vill du spela igen? ECHO Y /N? SET /p play = IF %play %EQU y GOTO beginIF %play %EQU n GOTO closeIF % play% GTR y GOTO playagainIF% play% LSS y GOTO playagainIF% play% GTR n GOTO playagainIF% play% LSS n GOTO playagain (Här är vårt slutavsnitt. Detta berättar för användaren hur många gissningar de tog och frågar sedan om de skulle vilja att spela igen. Lägg märke till att vi också kan använda EQU, GTR och LSS med bokstäver.) Okej! Om du bara kopierade den här koden skulle du ha ett legitimt gissningsspel. Inte riktigt snyggt, men hej, det är bättre än de flesta kan göra. Men vi kommer att lägga till en liten twist, bara för att göra saker intressanta ….

Steg 6: Twist

Twist
Twist
Twist
Twist
Twist
Twist

Nu har vi ett fungerande spel just nu, men vi vill göra det lite mer intressant. Vad sägs om att lägga till ett incitament för vår spelare att gissa rätt antal? Vad sägs om att vi gör något liknande.. stänger av datorn om de inte gissar antalet? Det vore ganska coolt! Okej, nu lägger vi till en liten kod för att göra dessa ändringar. Först ska vi lägga till en rad i det avsnitt av kod som vi märkte "försök igen". Så hitta det avsnittet. Det ser ut så här:: RetrySET /p Gissa = IF%Gissa%LSS%Svar%ECHO Mitt nummer är högre. IF%Gissa%GTR%Svara%ECHO Mitt nummer är lägre. IF%Gissa%==%Svara%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO RetryOkay, vi kommer att lägga till denna rad direkt efter "ECHO". (När vi sätter en punkt efter ECHO lämnar den en tom rad.) Här är den nya koden: IF %GuessNum %EQU 4 GOTO shutdownGNär vi lägger till denna rad ser avsnittet ut så här:: RetrySET /p Guess = IF %Guess % LSS%Svar%ECHO Mitt nummer är högre. IF%Gissa%GTR%Svara%ECHO Mitt nummer är lägre. IF%Gissa%==%Svara%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1IF%GuessNum%EQU 4 GOTO -avstängningGGOTO Försök Nu bör det vara ganska uppenbart vad detta gör. Den berättar för datorn att om GuessNum EQUals 4 ska den gå till den kodavsnitt som är märkt "shutdownG". Så, vad vill vi att detta avstängningsavsnitt ska säga? Tja, uppenbarligen måste det märkas "shutdownG". Därefter måste den stänga av datorn. Kommandot för avstängning är "SHUTDOWN -s". Detta kommer att stänga av datorn, men vi vill lägga till några till kommandot. Vi lägger till ett "-f". Det tvingar alla program att stänga, och vi lägger till en "-t 60". Det kommer att berätta för datorn att visa ett fönster och vänta sextio sekunder med att stänga. Vi lägger också till "-c" meddelande här "". som visar ett meddelande i avstängningsfönstret. Efter vårt avstängningskommando kommer vi att klämma på samma kod som vi har ovan, koden som gör att vår spelare kan välja nummer och ger dem feedback. Så vår avstängningskod ser nu ut så här:: shutdownGSHUTDOWN -s -f -t 60 -c "Fortsätt gissa! Om du inte gissar rätt nummer stängs datorn av!": shutdownG1SET /p Gissa = IF %Gissa %LSS %Svara %ECHO Mitt nummer är högre. IF %Gissa %GTR %Svar %ECHO Mitt nummer är lägre. IF%Gissa%==%Svara%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO avstängningG1Nu har vi ställt in datorn på SHUTDOWN och visar ett meddelande, men vi måste också berätta för datorn för att stoppa avstängningen om den har startats. Så, vi lägger till det i avsnittet med kodning märkt "slut". Det avsnittet ser ut så här:: ENDIF % GuessNum % GTR 4 SHUTDOWN -aECHO Du har rätt! Svaret var %Answer %ECHO Det tog %GuessNum %Guesses. ECHO. PAUSECLSECHO Vill du spela igen? ECHO Y /N? SET /p play = IF %play %EQU y GOTO beginIF %play %EQU n GOTO closeIF % play% GTR y GOTO playagainIF% play% LSS y GOTO playagainIF% play% GTR n GOTO playagainIF% play% LSS n GOTO playagainVi vill stoppa avstängningen, och vi gör det med kommandot "SHUTDOWN -a". Så, vi lägger till en rad som går så här: IF % GuessNum % GTR 4 SHUTDOWN -aVi lägger till det kommandot direkt efter etiketten, och det kommer att berätta för datorn att köra SHUTDOWN -a bara om spelaren har gjorde mer än fyra gissningar och började en avstängning. Okej! du borde ha ditt spel klart nu! VI kommer att se till att det inte finns några buggar i nästa steg.

Steg 7: Slutsteg

Sista stegen
Sista stegen

Okej, nu om du har dragit ihop all den kodningen så har du något som ser ut så här: beginECHO Jag tänker på ett nummerECHO jag tänker ….. SET /a GuessNum = 0: pickASET / a Answer =%RANDOM%IF%Answer%GTR 20 GOTO pickAIF%Answer%EQU 0 GOTO pickAECHO Jag tänker på ett tal mellan 1 och 20ECHO Gissa vilket nummer jag tänker på.:RetrySET /p Gissa = IF%gissa %LSS%Svar%ECHO Mitt nummer är högre. IF%Gissa%GTR%Svara%ECHO Mitt nummer är lägre. IF%Gissa%==%Svara%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1IF%GuessNum% EQU 4 GOTO -avstängningGGOTO Försök igen: ENDIF % GuessNum % GTR 4 SHUTDOWN -aECHO Du har rätt! Svaret var %Answer %ECHO Det tog %GuessNum %Guesses. ECHO. PAUSECLSECHO Vill du spela igen? ECHO Y /N? SET /p play = IF %play %EQU y GOTO beginIF %play %EQU n GOTO closeIF % play% GTR y GOTO playagainIF% play% LSS y GOTO playagainIF% play% GTR n GOTO playagainIF% play% LSS n GOTO playagain: closeECHO Tack för att du spelar! PAUSEEXIT cmd: shutdownGSHUTDOWN -s -f -t 60 -c "Fortsätt gissa ! Om du inte gissar rätt nummer stängs datorn av! ": ShutdownG1SET /p Gissa = IF % Gissa % LSS % Svar % ECHO Mitt nummer är högre. IF % Gissa % GTR % Svara % ECHO Mitt nummer är Lower. IF%Guess%==%Answer%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO shutdownG1Det borde vara allt vi behöver rätt? Så, fortsätt och spara den anteckningsblock.txt -filen du har som GuessGame.bat. Egentligen kan du namnge det vad du vill, så länge du sätter.bat i slutet. Okej, så klicka på ikonen och kör programmet! Fungerade det? Tja, liksom. Det gör några konstiga saker, eller hur? Det visar sig att när vi skriver en batch som denna, ECHO kommandotolken varje kommando vi ger den, precis som om vi skrev dem i kommandotolken. Så spelet fungerar, men det är lite rörigt och oklart. Kan vi göra något åt det här? Japp! Allt vi behöver göra är att skriva den här raden i början av vår kod: @ECHO OFFT detta säger till datorn att stänga av ECHO. Och @ -tecknet vid tiggeriet säger att det ska stänga av ECHO för varje kommando. Om vi lämnade det @ utanför, skulle det bara stänga av ECHO för ett kommando.

Steg 8: Allt klart

Grattis! Du har just skrivit ett Batch -filspel. Ganska enkelt eller hur? Om du kan hantera detta kan du ta reda på hur du gör ganska mycket med Batch -filer. Bara leka med det, göra några experiment. Bara om du inte kunde få något att fungera, eller om jag lämnade något i all den kodningen, ger jag dig filen här.

Rekommenderad: