Innholdsfortegnelse:

Batchfiler: Noen grunnleggende ..: 8 trinn
Batchfiler: Noen grunnleggende ..: 8 trinn

Video: Batchfiler: Noen grunnleggende ..: 8 trinn

Video: Batchfiler: Noen grunnleggende ..: 8 trinn
Video: Algebraoppgave 8.trinn 2024, November
Anonim
Batchfiler: Noen grunnleggende…
Batchfiler: Noen grunnleggende…

Denne instruksen vil lære deg noen grunnleggende om å skrive batchfiler, og vil vise deg hvordan du lager et tallgjettingsspill med et par vendinger, bare for å holde ting interessant …

Jeg har lært de fleste av mine kommandoprompt -ferdigheter, og alt mitt batchskriving fra internett generelt, og Instuctables spesielt. Jeg vil takke Instructables -brukeren Neodudeman for hans flotte instrukser om batchskriving. Takk!

Trinn 1: Hva er en batchfil?

Hva er en batchfil?
Hva er en batchfil?

Vel, de fleste av leserne mine vet sannsynligvis allerede hva en batchfil er, men bare i tilfelle….

En batchfil er bare en samling (batch) av MSDOS -kommandoer som kjøres sekvensielt når du kjører batchfilen. Batchfiler starter som.txt -filer i notisblokken, og blir kjørbare filer når du lagrer dem som noe med en.bat -forlengelse. Så i utgangspunktet er alt du gjør å skrive en fil i Notisblokk, og deretter lagre den som, si, "instructable.bat". Når.bat er plassert på slutten av filnavnet, vil en fin, ny fil dukke opp, navngitt hva du heter den, med et pent, tannhjulet ikon. Ok, nå som vi vet hva disse batchfilene er, la oss komme til å skrive!

Trinn 2: Grunnleggende kommandoer

Grunnleggende kommandoer
Grunnleggende kommandoer
Grunnleggende kommandoer
Grunnleggende kommandoer
Grunnleggende kommandoer
Grunnleggende kommandoer
Grunnleggende kommandoer
Grunnleggende kommandoer

Ok, du må lære deg noen kommandoer. Så først, åpne MSDOS -ledeteksten. Åpne startvinduet, klikk på run, skriv "cmd.exe" og klikk deretter run. Okay. Først skal vi se på variabler. Variabler er tall, ord eller andre ting som (noe åpenbart) varierer. Kommandoprompten har en variabel funksjon. Den har noen variabler som allerede er angitt, for eksempel TID, DATE og noen få andre. De fleste variabler kan du imidlertid sette selv. Klikk på kommandoprompt -vinduet, og skriv: SET variable = randomIt spiller egentlig ingen rolle om du bruker "SET" med store bokstaver eller ikke, men jeg liker å bruke alle kommandoene mine stort, spesielt når du skriver batchfiler. Det gjør det bare lettere å fortelle hva du gjør. Trykk nå enter. Bra for deg! Du har angitt din første variabel! Men hva kan vi gjøre med det? hvem bryr seg om alt vi kan gjøre er å sette variabelen riktig? Vel, som det viser seg, kan vi gjøre mye mer enn det, men først kan vi bare prøve å få datamaskinen til å fortelle oss hva variabelen er satt til. Ok, for å få datamaskinen til å lese verdien av en variabel, skriver vi inn navnet på variabelen, i dette tilfellet "variabel" og setter navnet inne i %merker, slik: %variable %. Skriv inn det, og trykk enter:%variable%Merkelig feil, hva? Datamaskinen sa at "variabel" ikke gjenkjennes som en intern eller ekstern kommando, et operativt program eller en batchfil. " Så hvorfor ga den den feilen? Vel, i utgangspunktet ga den den feilen fordi kommandoprompten behandler verdien av den variabelen som om du skrev den inn selv. Så da du skrev %variable %, trodde datamaskinen at du sa at den skulle utføre kommandoen "tilfeldig". Tydeligvis trenger vi noe annet for å se verdien av variabelen vår. Det er her ECHO -kommandoen kommer inn. ECHO -kommandoen forteller ganske enkelt kommandoprompten om å ekko, eller si, hva du enn skrev etter ECHO. Så hvis vi skriver inn ECHO -kommandoen før variabelen vår, bør vi få det vi vil ha: ECHO %variable %There! Nå har vi fått det vi vil! Datamaskinen skriver ut "tilfeldig". Tydeligvis var dette verdien vi skrev for variabelen vår, så det er resultatet vi ønsket. I neste trinn lærer vi mer om variabler og hvordan vi kan bruke dem.

Trinn 3: Bruk SET -kommandoen og variablene

Bruke SET -kommandoen og variablene
Bruke SET -kommandoen og variablene
Bruke SET -kommandoen og variablene
Bruke SET -kommandoen og variablene

Ok, nå som vi vet hva variabler er, hva annet kan vi gjøre med dem? Vel, vi kan gjøre matte, vi kan bruke dem som betingelser for å skrive programmer og batchfiler, vi kan utføre grunnleggende regning, vi kan utføre kommandoer og så mye mer. Vi vil ikke gå inn på alt du kan gjøre med variabler, men vi vil diskutere noen viktige aspekter ved variabelfunksjonen. For det første produserer SET -kommandoen i seg selv bare strengvariabler. Dette betyr at det ikke vil legge til eller gjøre noen annen matematikk. Hvis du skulle fortelle datamaskinen å legge 1 til en variabel med verdien 1, ville det gi deg verdien 1+1. Hvis vi vil at den faktisk skal legge til de to tallene, må vi plassere en "/a" etter SET -kommandoen. Derfor skriver vi: SET /a varible = (verdi) Anta at vi ønsker å sette en variabel i vår batchfil som brukeren vil gi. Vi vil kanskje gjøre dette hvis vi beregnet verdier i henhold til en formel, eller i vårt tilfelle hvis vi vil at brukeren skal gjette et tall som datamaskinen har kommet opp med. For å generere en bruker spesifisert variabel, legger vi til a /p etter SET -kommandoen, og vi forlater området etter = tomt: SET /p variabel = Der går du! En bruker spesifisert variabel! Hvis vi skulle sette denne linjen i en batchfil, ville batchen kjøre til den nådde denne linjen, og deretter ville den vente på brukerinndata før den fortsatte. Den andre kule tingen med /p er at den fullstendig negerer /a. Når vi inkluderer a /p, kan vi bare utelate /a. Det neste vi lærer om det, produserer tilfeldige variabler. Hvis vi vil at datamaskinen skal velge et tilfeldig tall for en variabel, skriver vi ganske enkelt SET -kommandoen, etterfulgt av variabelen, og setter deretter variabelen til %RANDOM %. Nok en gang trenger det ikke å være kapital, men jeg liker å gjøre det uansett. Så vi skriver: SET /a variabel =%RANDOM%Selvfølgelig er dette ikke en brukerspesifisert variabel, så vi inkluderer /a. Kul! Så nå vet vi hvordan vi skal produsere et tilfeldig tall! Men hvor tilfeldig er det? Vel, det viser seg at datamaskinen velger et tall mellom 0 og et sted rundt 37 000. Jeg er ikke sikker på hva det eksakte tallet er. Men hva om vi vil ha et mindre antall? Anta at vi, som i denne instruksjonsboken, ønsker et håndterbart tall for noe som et gjettespill? Vel, det er der IF -kommandoen kommer inn….

Trinn 4: IF- og GOTO -kommandoene. Makt i hendene på batchforfatteren

IF- og GOTO -kommandoene. Makt i hendene på batchforfatteren
IF- og GOTO -kommandoene. Makt i hendene på batchforfatteren

Så vi ønsker å produsere et håndterbart tall. La oss anta at vi ønsker å produsere et tilfeldig tall mellom 1 og 20. Ok, det er lett å si, men RANDOM -verdien velger et tall mellom 1 og 37 000. Det er det vi skal bruke IF til. IF -kommandoen sier i utgangspunktet HVIS noe skjer, eller HVIS noe er lik, eller ikke er lik, en viss verdi, så gjør DETTE. Så, IF setter betingede kommandoer. Vi ønsker å produsere et tall som er mindre enn tjue, men større enn ett, åpenbart, vi starter med å fortelle datamaskinen å velge et tilfeldig tall, men da må vi kunne fortelle det å velge et nytt nummeret hvis tallet det velger ikke passer til våre krav. Det er her GOTO -kommandoen kommer inn. GOTO ber ganske enkelt datamaskinen om å GÅ TIL en bestemt etikett i koden. Etiketter ser slik ut: pickAlle ord plassert etter et kolon blir en etikett som vi kan få tilgang til med GOTO -kommandoen. Så, hvis vi vil gå til delen av koden med "plukk" -etiketten over den, skriver vi ganske enkelt: GOTO pickAlright, så la oss fortsette med kodingen vår. Vi har allerede fortalt datamaskinen å velge et tilfeldig tall, så vi har skrevet: SET /a answer =%RANDOM%Nå vil vi trekke dette tallet ned til et mindre område. Så vi påkaller IF -kommandoen. Noe som dette burde gjøre susen: IF % answer % GTR 20 GOTO pick Dette forteller datamaskinen GOTO pick IF svaret er større enn 20. Vi kan også sette noen av disse betingelsene på IF -kommandoen: EQU - EqualNEQ - Not EqualLSS - Less ThanGTR - Greater ThanLEQ - Less Than or Equal ToGEQ - Greater Than or Like ToThus, med IF, GOTO, etiketter og disse forkortelsene, kan vi manipulere batchfilen vår hvilken som helst måte vi velger. Ok, så vi har vårt tilfeldige tall under tjue nå, og her er det vi har så langt:: pickSET /a answer =%RANDOM%IF%answer%GTR 20 GOTO pickNow, la oss sørge for at datamaskinen ikke gjør det t velg 0 for svaret.:pickSET /a answer =%RANDOM%IF%answer%GTR 20 GOTO pickIF $ answer%EQU 0 GOTO pickOkay! Nå har vi et brukbart tall mellom 1 og 20. La oss gå videre til kjøttet av Batch.

Trinn 5: Kjøttet i spillet vårt

Kjøttet i spillet vårt
Kjøttet i spillet vårt

Ok, vi har vårt tilfeldige nummer. Vi vil også telle hvor mange gjetninger spilleren gjør, så vi setter en annen variabel: SET /a guessnum = 0Det setter geussnum -variabelen til null, og vi ga den /a -parameteren, så vi kan legge til til det hver gang brukeren gjetter. Ok. Vi har et tilfeldig tall, og vi har satt antall gjetninger. Nå trenger vi noen instruksjoner, og vi må ha noen brukerinput for gjetningstallet. Du burde forstå det meste av dette nå, så jeg skal bare vise deg koden:: beginECHO Jeg kommer til å tenke på et tallECHO jeg tenker ….. SET /a GuessNum = 0 (Denne ECHO er de to linjene og setter antall gjetninger til 0): pickASET /a Svar =%RANDOM%IF%Svar%GTR 20 GOTO pickAIF%Svar%EQU 0 GOTO pickAECHO Jeg tenker på et tall mellom 1 og 20ECHO Gjett hvilket tall jeg tenker (Denne delen sløyfes til den SET vårt tilfeldige tall, og deretter ECHOs instruksjonene for spilleren vår): Prøv på nytt /gjett = IF %Gjett %LSS %Svar %ECHO Mitt tall er høyere. IF %Gjett %GTR %Svar % ECHO Mitt nummer er lavere. IF%Gjett%==%Svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Prøv på nytt (Denne delen forteller datamaskinen om å be om brukerinngang, og sløyfer deretter kontinuerlig til brukeren velger deretter går det til etiketten END): ENDECHO Du har rett! Svaret var %Answer %ECHO Det tok %GuessNum %Guesses. ECHO. PAUSECLSECHO Vil du spille igjen? 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 (Her er slutten vår. Dette forteller brukeren hvor mange gjetninger de tok, og spør deretter om de vil å spille igjen. Legg merke til at vi også kan bruke EQU, GTR og LSS med bokstaver.) Ok! Hvis du bare kopierte denne koden, ville du ha et legitimt gjetningsspill. Ikke skikkelig fancy, men hei, det er bedre enn de fleste kan gjøre. Men vi skal legge til en liten vri, bare for å gjøre ting interessante….

Trinn 6: Twist

Twist
Twist
Twist
Twist
Twist
Twist

Nå har vi et fungerende spill akkurat nå, men vi vil gjøre det litt mer interessant. Hva med å legge til noe insentiv for spilleren vår å gjette riktig nummer? Hva med å gjøre noe sånt.. å slå av datamaskinen hvis de ikke gjetter tallet? Det hadde vært ganske kult! Ok, nå legger vi til en liten kode for å gjøre disse endringene. Først skal vi legge til en linje i delen av koden vi merket "prøv igjen". Så finn den delen. Det ser slik ut: RetrySET /p Gjett = IF%Gjett%LSS%Svar%ECHO Mitt nummer er høyere. IF%Gjett%GTR%Svar%ECHO Mitt tall er lavere. IF%Gjett%==%Svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO RetryOkay, vi skal legge til denne linjen rett etter "ECHO". (Når vi setter en periode etter ECHO, etterlater det en tom linje.) Her er den nye koden: IF %GuessNum %EQU 4 GOTO shutdownGNår vi legger til denne linjen, ser delen slik ut:: Prøv igjen /gjett = IF %gjett % LSS%Svar%ECHO Mitt tall er høyere. IF%Gjett%GTR%Svar%ECHO Mitt tall er lavere. IF%gjett%==%svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1IF%GuessNum%EQU 4 GOTO -nedleggelseGGOTO Prøv igjen Nå bør det være ganske åpenbart hva dette gjør. Den forteller datamaskinen at hvis GuessNum EQUals 4, skal den gå til delen av koden merket "shutdownG". Så, hva vil vi at denne nedleggelsesdelen skal si? Vel, åpenbart, det må merkes som "shutdownG". Deretter må den slå av datamaskinen. Kommandoen for å slå av er "SHUTDOWN -s". Dette vil slå av datamaskinen, men vi vil legge til noen i kommandoen. Vi legger til en "-f". Det vil tvinge alle programmer til å lukke, og vi legger til en "-t 60". Det vil fortelle datamaskinen å vise et vindu og vente seksti sekunder med å lukke. Vi legger også til "-c" melding her "". som vil vise en melding i vinduet for nedleggelse. Etter avslutningskommandoen, tar vi den samme koden som vi har ovenfor, koden som gjør at spilleren vår kan velge tall og gir dem tilbakemelding. Så vår avstengningskode ser nå slik ut:: shutdownGSHUTDOWN -s -f -t 60 -c "Fortsett å gjette! Hvis du ikke gjetter riktig nummer, vil datamaskinen slå seg av!": shutdownG1SET /p Gjett = IF %Gjett %LSS %Svar %ECHO Mitt nummer er høyere. IF %Gjett %GTR %Svar %ECHO Mitt nummer er lavere. IF%Gjett%==%Svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO shutdownG1Nå har vi satt datamaskinen til SHUTDOWN, og viser en melding, men vi må også fortelle datamaskinen for å stoppe nedstengningen, hvis den har blitt startet. Så, vi legger det til i delen med koding merket "slutt". Den delen ser slik ut: ENDIF % GuessNum % GTR 4 SHUTDOWN -aECHO Du har rett! Svaret var %Answer %ECHO Det tok %GuessNum %Guesses. ECHO. PAUSECLSECHO Vil du spille igjen? 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 vil stoppe nedstengningen, og vi gjør det med kommandoen "SHUTDOWN -a". Så, vi legger til en linje som går slik: IF % GuessNum % GTR 4 SHUTDOWN -aVi legger til den kommandoen rett etter etiketten, og som vil fortelle datamaskinen å kjøre SHUTDOWN -a -kommandoen bare hvis spilleren har gjorde mer enn fire gjetninger, og startet en nedleggelse. Greit! du burde ha spillet ditt ferdig nå! VI sørger for at det ikke er noen feil i neste trinn.

Trinn 7: Siste trinn

Siste trinn
Siste trinn

Ok, nå, hvis du samlet sammen all den kodingen, så vil du ha noe som ser omtrent slik ut: beginECHO Jeg kommer til å tenke på en nummerECHO jeg tenker ….. SET /a GuessNum = 0: pickASET / a Answer =%RANDOM%IF%Answer%GTR 20 GOTO pickAIF%Answer%EQU 0 GOTO pickAECHO Jeg tenker på et tall mellom 1 og 20ECHO Gjett hvilket tall jeg tenker på.: Prøv på nytt /gjett = IF%gjett %LSS%Svar%ECHO Mitt nummer er høyere. IF%Gjett%GTR%Svar%ECHO Mitt tall er lavere. IF%Gjett%==%Svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1IF%GuessNum% EQU 4 GOTO shutdownGGOTO Prøv på nytt: ENDIF % GuessNum % GTR 4 SHUTDOWN -aECHO Du har rett! Svaret var %Answer %ECHO Det tok %GuessNum %Guesses. ECHO. PAUSECLSECHO Vil du spille igjen? 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 Takk for at du spilte! PAUSEEXIT cmd: shutdownGSHUTDOWN -s -f -t 60 -c "Fortsett å gjette ! Hvis du ikke gjetter riktig nummer, vil datamaskinen slå seg av! ": ShutdownG1SET /p Gjett = HVIS % Gjett % LSS % Svar % ECHO Mitt nummer er høyere. IF % Gjett % GTR % Svar % ECHO Mitt nummer er Lavere. IF%Gjett%==%Svar%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO shutdownG1 Det burde vel være alt vi trenger? Så, fortsett og lagre den notisblokk -txt -filen du har som GuessGame.bat. Egentlig kan du kalle det hva du vil, så lenge du setter.bat på slutten. Ok, så klikk på ikonet og kjør programmet! Virket det? Vel, liksom. Det gjør noen rare ting, ikke sant? Det viser seg at når vi skriver en batch som denne, ECHOs ledeteksten hver kommando vi gir den, akkurat som om vi skrev dem inn i ledeteksten. Så spillet fungerer, men det er litt rotete og uklart. Kan vi gjøre noe med dette? Jepp! Alt vi trenger å gjøre er å skrive denne linjen i begynnelsen av koden vår: @ECHO OFFT Dette forteller datamaskinen å slå av ECHO. Og @ -tegnet ved tiggeriet forteller det å slå ECHO AV for hver kommando. Hvis vi forlot @ @, ville det bare slå ECHO AV for én kommando.

Trinn 8: Alt ferdig

Gratulerer! Du har nettopp skrevet et batchfilspill. Ganske enkelt er det ikke? Hvis du kan håndtere dette, kan du finne ut hvordan du gjør ganske mye med batchfiler. Bare lek med det, gjør noen eksperimenter. Bare hvis du ikke kunne få noe til å fungere, eller hvis jeg utelot noe i all den kodingen, gir jeg deg filen her.

Anbefalt: