INHOUDSOPGAWE:

Batch -lêers: 'n paar basiese beginsels ..: 8 stappe
Batch -lêers: 'n paar basiese beginsels ..: 8 stappe

Video: Batch -lêers: 'n paar basiese beginsels ..: 8 stappe

Video: Batch -lêers: 'n paar basiese beginsels ..: 8 stappe
Video: 10 привычек, чтобы стать счастливым 2024, Desember
Anonim
Batch -lêers: 'n paar basiese beginsels …
Batch -lêers: 'n paar basiese beginsels …

Hierdie Instructable leer u 'n paar basiese beginsels van die skryf van batch -lêers en wys u hoe u 'n aantal raaisels met 'n paar kinkels kan maak, net om dinge interessant te hou …

Ek het die meeste van my opdragpromptvaardighede geleer, en al my batch -skryfwerk van die internet in die algemeen, en Instuctables in die besonder. Ek wil dankie sê aan die Instructables -gebruiker Neodudeman vir sy wonderlike instruksies oor bondelskryf. Dankie!

Stap 1: Wat is 'n bondellêer?

Wat is 'n bondel lêer?
Wat is 'n bondel lêer?

Die meeste van my lesers weet waarskynlik alreeds wat 'n bondellêer is, maar in geval …

'N Batch -lêer is bloot 'n versameling (bondel) MSDOS -opdragte wat opeenvolgend uitgevoer word wanneer u die batch -lêer uitvoer. Batch -lêers begin as.txt -lêers in die notaboek en word uitvoerbare lêers wanneer u dit stoor as iets met 'n.bat -uitbreiding. U hoef dus net 'n lêer in Notepad te skryf en dit dan as 'instructable.bat' te stoor. Sodra die.bat aan die einde van die lêernaam geplaas is, verskyn 'n mooi nuwe lêer met die naam wat u ook al noem, met 'n mooi, versierde ikoon. Goed, nou dat ons weet wat hierdie bondellêers is, kan ons aan die skryf kom!

Stap 2: Basiese opdragte

Basiese opdragte
Basiese opdragte
Basiese opdragte
Basiese opdragte
Basiese opdragte
Basiese opdragte
Basiese opdragte
Basiese opdragte

Goed, u moet 'n paar opdragte leer. Maak dus eers die MSDOS -opdragprompt oop. Open die beginvenster, klik op run, tik "cmd.exe" en klik dan op run. Okay. Eerstens gaan ons na veranderlikes kyk. Veranderlikes is getalle, woorde of ander dinge wat (ietwat duidelik) wissel. Die opdragprompt het 'n veranderlike funksie. Dit het 'n paar veranderlikes wat reeds gestel is, soos TYD, DATUM en 'n paar ander. Die meeste veranderlikes kan u egter self stel. Klik op die venster Opdragprompt en tik: SET variable = random Dit maak nie regtig saak of u die 'SET' met 'n hoofletter gebruik nie, maar ek hou daarvan om al my opdragte te gebruik, veral as u batch -lêers skryf. Dit maak dit net makliker om te vertel wat jy doen. Tik nou op enter. Goed vir jou! U het u eerste veranderlike gestel! Maar wat kan ons daarmee doen? wie gee om of ons net die veranderlike reg moet stel? Soos dit blyk, kan ons baie meer as dit doen, maar probeer eers om die rekenaar te laat weet hoe die veranderlike gestel is. Oké, om die rekenaar die waarde van 'n veranderlike te laat lees, tik ons die naam van die veranderlike, in hierdie geval 'veranderlike' en plaas die naam in %punte, soos volg: %variable %. Tik dit, en druk enter:%veranderlike%Weird fout huh? Die rekenaar het gesê dat '' veranderlike 'nie herken word as 'n interne of eksterne opdrag, 'n uitvoerbare program of 'n bondellêer nie. Waarom het dit die fout gegee? Eintlik het dit die fout gegee, want die opdragprompt behandel die waarde van die veranderlike asof u dit self ingevoer het. Toe u dus %variable %ingetik het, het die rekenaar gedink dat u dit beveel om die opdrag "random" uit te voer. Dit is duidelik dat ons iets anders nodig het om die waarde van ons veranderlike te sien. Dit is waar die ECHO -opdrag inkom. Die ECHO -opdrag vertel die opdragprompt eenvoudig om te eggo of te sê wat u ook al na ECHO getik het. Dus, as ons die ECHO -opdrag voor ons veranderlike tik, moet ons kry wat ons wil hê: ECHO %veranderlike %Daar! Nou het ons wat ons wil hê! Die rekenaar druk "ewekansig" af. Dit was duidelik die waarde wat ons vir ons veranderlike getik het, so dit is die resultaat wat ons wou hê. In die volgende stap leer ons meer oor veranderlikes en hoe ons dit kan gebruik.

Stap 3: Gebruik die SET -opdrag en veranderlikes

Gebruik die SET -opdrag en veranderlikes
Gebruik die SET -opdrag en veranderlikes
Gebruik die SET -opdrag en veranderlikes
Gebruik die SET -opdrag en veranderlikes

Goed, noudat ons weet wat veranderlikes is, wat kan ons anders daarmee doen? Wel, ons kan wiskunde doen, ons kan dit gebruik as voorwaardes vir die skryf van programme en bondellêers, ons kan basiese rekenkunde uitvoer, ons kan opdragte uitvoer, en nog baie meer. Ons gaan nie in op alles wat u met veranderlikes kan doen nie, maar ons sal 'n paar belangrike aspekte van die veranderlike funksie bespreek. Eerstens lewer die SET -opdrag op sigself slegs stringveranderlikes. Dit beteken dat dit geen ander wiskunde sal byvoeg of doen nie. As u die rekenaar sou vertel om 1 by te voeg tot 'n veranderlike met 'n waarde van 1, sou dit u die waarde 1+1 gee. As ons wil hê dat die twee getalle eintlik moet optel, moet ons 'n "/a" plaas na die SET -opdrag. Daarom tik ons: SET /a varible = (waarde) Veronderstel nou dat ons 'n veranderlike in ons bondellêer wil plaas wat die gebruiker sal verskaf. Ons wil dit dalk doen as ons waardes bereken volgens 'n formule, of, in ons geval, as ons wil hê dat die gebruiker 'n getal moet raai waarmee die rekenaar vorendag gekom het. Om 'n veranderlike wat deur die gebruiker gespesifiseer is, te genereer, voeg ons a /p by na die SET -opdrag, en ons verlaat die gebied na = blank: SET /p variable = Daar gaan jy! 'N Veranderlike wat deur die gebruiker gespesifiseer is! As ons hierdie reël in 'n bondellêer plaas, sal die bondel loop totdat dit hierdie reël bereik, en dan wag dit op gebruikersinvoer voordat dit verder gaan. Die ander goeie ding van die /p is dat dit die /a heeltemal ontken. As ons a /p insluit, kan ons die /a net weglaat. Die volgende ding wat ons leer, is om willekeurige veranderlikes te produseer. As ons wil hê dat die rekenaar 'n ewekansige getal vir 'n veranderlike moet kies, tik ons eenvoudig die SET -opdrag, gevolg deur die veranderlike, en stel die veranderlike dan gelyk aan RANDOM %. Weereens hoef dit nie kapitaal te wees nie, maar ek hou daarvan om dit in elk geval te doen. Ons tik dus: SET /a veranderlike =%RANDOM%Dit is duidelik dat dit nie 'n veranderlike is wat deur die gebruiker gespesifiseer is nie, dus sluit ons die /a in. Koel! So nou weet ons hoe om 'n ewekansige getal te produseer! Maar hoe lukraak is dit? Dit blyk dat die rekenaar 'n getal tussen 0 en ongeveer 37 000 kies. Ek is nie seker wat die presiese getal is nie. Maar wat as ons 'n kleiner getal wil hê? Gestel ons wil, soos in hierdie instruksies, 'n hanteerbare getal hê vir iets soos 'n raaisel? Wel, dit is waar die IF -opdrag inkom …

Stap 4: Die IF- en GOTO -opdragte. Krag in die hande van die bondelskrywer

Die IF- en GOTO -opdragte. Krag in die hande van die bondelskrywer
Die IF- en GOTO -opdragte. Krag in die hande van die bondelskrywer

Ons wil dus 'n hanteerbare getal produseer. Kom ons veronderstel dat ons 'n ewekansige getal tussen 1 en 20. wil produseer. Goed, dit is maklik om te sê, maar die RANDOM -waarde kies 'n getal tussen 1 en 37 000. Dit is waarvoor ons IF sal gebruik. Die IF opdrag sê basies AS iets gebeur, of AS iets gelyk is aan, of nie gelyk is nie, 'n sekere waarde, doen dit dan. Dus, IF stel voorwaardelike opdragte in. Ons wil 'n getal van minder as twintig produseer, maar groter as een, ons begin natuurlik met die opdrag van die rekenaar om 'n ewekansige getal te kies, maar dan moet ons dit kan vertel om 'n nuwe nommer as die nommer wat dit kies nie aan ons vereistes voldoen nie. Dit is waar die GOTO -opdrag inkom. GOTO sê eenvoudig vir die rekenaar om na 'n sekere etiket in die kode te gaan. Etikette lyk so: pick Elke woord wat na 'n dubbelpunt geplaas word, word 'n etiket waartoe ons toegang kan verkry met die GOTO -opdrag. Dus, as ons na die gedeelte van die kode wil gaan met die etiket "kies" daarbo, tik ons eenvoudig: GOTO pickAlright, sodat ons kan voortgaan met ons kodering. Ons het al vir die rekenaar gesê om 'n ewekansige getal te kies, en ons het getik: SET /'n antwoord =%RANDOM%Nou wil ons hierdie getal tot 'n kleiner reeks afneem. Ons gebruik dus die IF -opdrag. Iets soos hierdie behoort die truuk te doen: IF % answer % GTR 20 GOTO pick Dit sê vir die rekenaar om GOTO pick te kry AS die antwoord GROTER as 20. Ons kan ook enige van hierdie voorwaardes op die IF -opdrag plaas: EQU - EqualNEQ - Not EqualLSS - Less ThanGTR - Greater ThanLEQ - Less Than or Equal ToGEQ - Greater Than or Equal ToTos, met IF, GOTO, etikette en hierdie afkortings, kan ons ons batch -lêer manipuleer op enige manier wat ons kies. Goed, so ons het ons ewekansige getal nou onder twintig, en hier is wat ons tot dusver gekry het: pickSET /a answer =%RANDOM%IF%answer%GTR 20 GOTO pickNow, laat ons seker maak dat die rekenaar nie ' t kies 0 vir die antwoord.:pickSET /'n antwoord =%RANDOM%IF%antwoord%GTR 20 GOTO pickIF $ antwoord%EQU 0 GOTO pickOkay! Nou het ons 'n bruikbare nommer tussen 1 en 20. Ons gaan na die vleis van die bondel.

Stap 5: Die vleis van ons spel

Die vleis van ons spel
Die vleis van ons spel

Goed, ons het ons ewekansige nommer. Ons wil ook tel hoeveel raaiskote ons speler maak, dus stel ons 'n ander veranderlike in: SET /a guessnum = 0 Dit stel die geussnum -veranderlike op nul, en ons het die /a parameter gegee, sodat ons kan byvoeg elke keer as die gebruiker raai. Ons het 'n ewekansige getal, en ons het die aantal raaiskote bepaal. Nou benodig ons 'n paar instruksies, en ons moet 'n paar gebruikersinvoer hê vir die raaiskoot. U behoort die meeste hiervan nou te verstaan, so ek wys u net die kode:: beginECHO, ek gaan aan 'n getal dink, dink ek … SET /a GuessNum = 0 (Hierdie ECHO's is die twee reëls stel die aantal raaiskote op 0): pickASET /a Antwoord =%RANDOM%IF%Antwoord%GTR 20 GOTO pickAIF%Antwoord%EQU 0 GOTO pickAECHO Ek dink aan 'n getal tussen 1 en 20ECHO Raai watter nommer ek dink (Hierdie afdeling loop totdat dit ons ewekansige getal stel, en ECHO dan die instruksies vir ons speler): Herproset /p Raai = IF %Raai %LSS %Antwoord %ECHO My nommer is hoër. IF %Raai %GTR %Antwoord % ECHO My nommer is laer. IF%Raai%==%Antwoord%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO Herprobeer (in hierdie afdeling word die rekenaar aangeraai om gebruikersinvoer te vra, en dan loop hy voortdurend totdat die gebruiker die korrekte nommer. Dan gaan dit na die etiket EINDE): ENDECHO U is reg! Die antwoord was %Answer %ECHO Dit het %GuessNum %Guesses. ECHO. PAUSECLSECHO geneem. Wil jy weer speel? ECHO J /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 (Hier is ons eindgedeelte. Dit vertel die gebruiker hoeveel raaiskote hulle geneem het, en vra dan of hulle wil om weer te speel. Let op dat ons die EQU, GTR en LSS ook met letters kan gebruik.) Goed! As u hierdie kode eenvoudig kopieer, het u 'n wettige raaisel. Nie regtig fancy nie, maar hey, dit is beter as wat die meeste mense kan doen. Maar ons gaan 'n bietjie draai gee, net om dinge interessant te maak …

Stap 6: Die draai

Die draai
Die draai
Die draai
Die draai
Die draai
Die draai

Ons het tans 'n werkende spel, maar ons wil dit 'n bietjie meer interessant maak. Hoe gaan dit met die aansporing van ons speler om die regte nommer te raai? Hoe gaan dit met ons, iets soos om hul rekenaar af te sluit as hulle nie die nommer raai nie? Dit sal nogal gaaf wees! Goed, nou sal ons 'n bietjie kode byvoeg om hierdie veranderinge aan te bring. Eerstens gaan ons 'n reël byvoeg by die gedeelte van die kode wat ons as 'herprobeer' gemerk het. So gaan soek die afdeling. Dit lyk so:: RetrySET /p Guess = IF%Guess%LSS%Answer%ECHO My Number is Higher. IF%Guess%GTR%Answer%ECHO My Number is Lower. IF%Guess%==%Answer%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO RetryOkay, ons gaan hierdie reël byvoeg direk na die "ECHO." (As ons 'n punt na ECHO plaas, laat dit 'n leë reël agter.) Hier is die nuwe kode: IF %GuessNum %EQU 4 GOTO shutdownG As ons hierdie reël byvoeg, lyk die gedeelte so: RetrySET /p Guess = IF %Guess % LSS%Answer%ECHO My Number is Higher. IF%Guess%GTR%Answer%ECHO My Number is Lower. IF%Guess%==%Answer%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1IF%GuessNum%EQU 4 GOTO -afskakeling GGOTO Herprobeer Teen hierdie tyd behoort dit redelik duidelik te wees wat dit doen. Dit sê vir die rekenaar dat as GuessNum EQUAL 4 is, dit na die gedeelte met die kode met die naam 'shutdownG' moet gaan. Dus, wat wil ons hê moet hierdie afsluitingsafdeling sê? Wel, dit moet duidelik 'shutdownG' genoem word. Vervolgens moet die rekenaar gesluit word. Die opdrag om af te sluit is "SHUTDOWN -s". Dit sal die rekenaar afskakel, maar ons wil 'n paar by die opdrag voeg. Ons sal 'n "-f" byvoeg. Dit sal alle programme dwing om te sluit, en ons voeg 'n "-t 60" by. Dit sal die rekenaar vertel om 'n venster te vertoon en sestig sekondes te wag om te sluit. Ons sal ook '-c' boodskap hier '' 'byvoeg. wat 'n boodskap in die afsluitvenster sal vertoon. Na ons afsluitingsopdrag, gaan ons dieselfde kode aan wat ons hierbo het, die kode waarmee ons speler syfers kan kies en terugvoer kan gee. -c "Hou aan raai! As u nie die regte nommer raai nie, sal die rekenaar afskakel!": shutdownG1SET /p Raai = IF %Raai %LSS %Antwoord %ECHO My nommer is hoër. IF %Raai %GTR %Antwoord %ECHO My nommer is laer. IF%Raai%==%Antwoord%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO shutdownG1 Nou het ons die rekenaar op SHUTDOWN gestel en 'n boodskap vertoon, maar ons moet ook die rekenaar om die sluiting te stop, as dit begin is. Dus, ons sal dit byvoeg by die gedeelte met kodering met die naam 'einde'. Daardie afdeling lyk so:: ENDIF % GuessNum % GTR 4 SHUTDOWN -aECHO Jy is reg! Die antwoord was %Answer %ECHO Dit het %GuessNum %Guesses. ECHO. PAUSECLSECHO geneem. Wil jy weer speel? ECHO J /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 playagainWe wil die afsluiting stop, en ons doen dit met die opdrag "SHUTDOWN -a". Dus, ons sal 'n reël byvoeg wat soos volg lyk: IF % GuessNum % GTR 4 SHUTDOWN -aWe sal die opdrag direk na die etiket byvoeg, en dit sal die rekenaar vertel om die SHUTDOWN -a -opdrag slegs uit te voer as die speler het meer as vier raaiskote gemaak en 'n afskakeling begin. Goed! u spel moet nou klaar wees! ONS sal seker maak dat daar geen foute in die volgende stap is nie.

Stap 7: Laaste stappe

Laaste stappe
Laaste stappe

Goed, as u nou al die kodering saamgevoeg het, dan sal u iets hê wat so lyk: beginECHO Ek gaan dink aan 'n getalECHO wat ek dink ….. SET /a GuessNum = 0: pickASET / a Answer =%RANDOM%IF%Answer%GTR 20 GOTO pickAIF%Answer%EQU 0 GOTO pickAECHO Ek dink aan 'n getal tussen 1 en 20ECHO Raai aan watter getal ek dink.:RetrySET /p Raai = IF%Raai %LSS%Antwoord%ECHO My nommer is hoër. IF%Raai%GTR%Antwoord%ECHO My nommer is laer. IF%Raai%==%Antwoord%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1IF%GuessNum% EQU 4 GOTO shutdownGGOTO Herprobeer: ENDIF % GuessNum % GTR 4 SHUTDOWN -aECHO U het reg! Die antwoord was %Answer %ECHO Dit het %GuessNum %Guesses. ECHO. PAUSECLSECHO geneem. Wil jy weer speel? ECHO J /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 Dankie vir die speel! PAUSEEXIT cmd: shutdownGSHUTDOWN -s -f -t 60 -c "Hou aan raai ! As jy nie die regte nommer raai nie, sal die rekenaar afskakel! ": ShutdownG1SET /p Raai = IF % Raai % LSS % Antwoord % ECHO My nommer is hoër. IF % Raai % GTR % Antwoord % ECHO My nommer is Lower. IF%Guess%==%Antwoord%GOTO ENDECHO. SET /a GuessNum =%GuessNum%+1GOTO shutdownG1 Dit moet alles wees wat ons nodig het, reg? Stoor dus die notaboek.txt -lêer wat u as GuessGame.bat het. U kan dit eintlik noem wat u wil, solank u die.bat aan die einde sit. Goed, klik op die ikoon en voer die program uit! Het dit gewerk? Wel soortgelyk. Dit doen 'n paar vreemde goed, nie waar nie? Dit blyk dat wanneer ons 'n bondel soos hierdie skryf, die opdragprompt ECHO elke opdrag wat ons dit gee, net asof ons dit in die opdragprompt tik. Die spel werk dus, maar dit is 'n bietjie morsig en onduidelik. Kan ons iets hieraan doen? Jip! Al wat ons hoef te doen, is om hierdie reël in die begin van ons kode in te tik: @ECHO OFFT Dit sê vir die rekenaar om die ECHO uit te skakel. En die @ -teken by die smeekboodskap sê dat die ECHO vir elke opdrag uitgeskakel moet word. As ons die @ uitgelaat het, sou dit die ECHO net vir een opdrag uitskakel.

Stap 8: Alles klaar

Baie geluk! U het pas 'n bondel -lêerspel geskryf. Redelik eenvoudig is dit nie? As u dit kan hanteer, kan u agterkom hoe u baie met Batch -lêers moet doen. Speel net daarmee, doen 'n paar eksperimente. As u nie iets aan die werk kon kry nie, of as ek iets weggelaat het in al die kodering, gee ek u die lêer hier.

Aanbeveel: