Inhoudsopgave:

Batchbestanden: enkele basisprincipes..: 8 stappen
Batchbestanden: enkele basisprincipes..: 8 stappen

Video: Batchbestanden: enkele basisprincipes..: 8 stappen

Video: Batchbestanden: enkele basisprincipes..: 8 stappen
Video: Enkele waarheden 8 decemberstrafzaak 2024, September
Anonim
Batchbestanden: enkele basisprincipes…
Batchbestanden: enkele basisprincipes…

Deze Instructable leert je enkele basisprincipes van het schrijven van batchbestanden en laat je zien hoe je een spel voor het raden van getallen kunt maken met een paar wendingen, gewoon om het interessant te houden …

Ik heb de meeste van mijn opdrachtpromptvaardigheden geleerd, en al mijn batch-schrijven van internet in het algemeen, en Instuctables in het bijzonder. Ik wil Instructables-gebruiker Neodudeman bedanken voor zijn geweldige Instructables over batch-schrijven. Bedankt!

Stap 1: Wat is een batchbestand?

Wat is een batchbestand?
Wat is een batchbestand?

Welnu, de meeste van mijn lezers weten waarschijnlijk al wat een batchbestand is, maar voor het geval dat ….

Een batchbestand is gewoon een verzameling (batch) van MSDOS-commando's die opeenvolgend worden uitgevoerd wanneer u het batchbestand uitvoert. Batchbestanden beginnen als.txt-bestanden in Kladblok en worden uitvoerbare bestanden wanneer u ze opslaat als iets met de extensie.bat. Dus eigenlijk hoef je alleen maar een bestand in Kladblok te schrijven en het vervolgens op te slaan als bijvoorbeeld "instructable.bat". Zodra de.bat aan het einde van de bestandsnaam is geplaatst, verschijnt er een mooi, nieuw bestand, genaamd hoe je het ook noemde, met een mooi, tandwielachtig pictogram. Oké, nu we weten wat deze batchbestanden zijn, gaan we schrijven!

Stap 2: Basisopdrachten

Basisopdrachten
Basisopdrachten
Basisopdrachten
Basisopdrachten
Basisopdrachten
Basisopdrachten
Basisopdrachten
Basisopdrachten

Oké, je zult een paar commando's moeten leren. Open dus eerst de MSDOS-opdrachtprompt. Open het startvenster, klik op uitvoeren, typ "cmd.exe" en klik vervolgens op uitvoeren. Ok. Eerst gaan we naar variabelen kijken. Variabelen zijn getallen, woorden of andere dingen die (enigszins duidelijk) variëren. De opdrachtprompt heeft een variabele functie. Het heeft een aantal variabelen die al zijn ingesteld, zoals TIJD, DATUM en een paar andere. De meeste variabelen kun je echter zelf instellen. Klik op het opdrachtpromptvenster en typ:SET variable=random. Het maakt echt niet uit of je de "SET" met een hoofdletter schrijft of niet, maar ik gebruik graag al mijn opdrachten met een hoofdletter, vooral bij het schrijven van batchbestanden. Het maakt het gewoon makkelijker om te vertellen wat je aan het doen bent. Druk nu op enter. Goed voor je! Je hebt je eerste variabele ingesteld! Maar wat kunnen we ermee? wat maakt het uit of we alleen de variabele goed kunnen instellen? Welnu, het blijkt dat we veel meer kunnen doen dan dat, maar laten we eerst proberen de computer ons te laten vertellen hoe de variabele is ingesteld. Oké, om de computer de waarde van een variabele te laten lezen, typen we de naam van de variabele, in dit geval "variabele" en plaatsen de naam tussen %-tekens, zoals dit: %variabele%. Ga je gang en typ dat in en druk op enter:%variable%Vreemde fout hè? De computer zei: "'variabele' wordt niet herkend als een interne of externe opdracht, bruikbaar programma of batchbestand." Dus waarom gaf het die fout? Nou, eigenlijk gaf het die fout omdat de opdrachtprompt de waarde van die variabele behandelt alsof je het zelf hebt ingetypt. Dus toen je %variable% typte, dacht de computer dat je hem vertelde het commando "willekeurig" uit te voeren. Het is duidelijk dat we iets anders nodig hebben om de waarde van onze variabele te zien. Dit is waar het ECHO-commando binnenkomt. Het ECHO-commando vertelt de opdrachtprompt eenvoudigweg om te herhalen, of te zeggen, wat je ook hebt getypt na ECHO. Dus als we het ECHO-commando voor onze variabele typen, zouden we moeten krijgen wat we willen: ECHO %variable%Daar! Nu hebben we wat we willen! De computer print "willekeurig". Het is duidelijk dat dit de waarde was die we voor onze variabele hebben getypt, dus dit is het resultaat dat we wilden. In de volgende stap leren we meer over variabelen en hoe we ze kunnen gebruiken.

Stap 3: Het SET-commando en de variabelen gebruiken

Het SET-commando en de variabelen gebruiken
Het SET-commando en de variabelen gebruiken
Het SET-commando en de variabelen gebruiken
Het SET-commando en de variabelen gebruiken

Oké, nu we weten wat variabelen zijn, wat kunnen we er nog meer mee doen? Welnu, we kunnen rekenen, we kunnen ze gebruiken als voorwaarden voor het schrijven van programma's en batchbestanden, we kunnen elementaire rekenkunde uitvoeren, we kunnen commando's uitvoeren en nog veel meer. We zullen niet ingaan op alles wat je met variabelen kunt doen, maar we zullen enkele belangrijke aspecten van de variabelefunctie bespreken. Ten eerste produceert het SET-commando op zichzelf alleen stringvariabelen. Dit betekent dat het geen andere wiskunde zal toevoegen of uitvoeren. Als je de computer zou vertellen om 1 toe te voegen aan een variabele met een waarde van 1, zou je de waarde 1+1 geven. Als we willen dat het de twee getallen daadwerkelijk toevoegt, moeten we een "/a" achter het SET-commando plaatsen. Daarom typen we:SET /a varible=(value) Stel nu dat we een variabele in ons batchbestand willen plaatsen die de gebruiker zal verstrekken. We zouden dit misschien willen doen als we waarden berekenen volgens een formule, of, in ons geval, als we willen dat de gebruiker een getal raadt dat de computer heeft bedacht. Om een door de gebruiker gespecificeerde variabele te genereren, voegen we een /p toe na het SET-commando, en laten we het gebied na = blank:SET /p variable=Daar ga je! Een door de gebruiker gespecificeerde variabele! Als we deze regel in een batchbestand zouden plaatsen, zou de batch worden uitgevoerd totdat deze deze regel heeft bereikt, en dan zou hij wachten op gebruikersinvoer voordat hij verder gaat. Het andere leuke van de /p is dat het de /a volledig negeert. Als we een /p opnemen, kunnen we de /a weglaten. Het volgende dat we zullen leren is het produceren van willekeurige variabelen. Als we willen dat de computer een willekeurig getal kiest voor een variabele, typen we gewoon de opdracht SET, gevolgd door de variabele, en stellen we de variabele in op %RANDOM%. Nogmaals, het hoeft geen kapitaal te zijn, maar ik doe het toch graag. Dus typen we:SET /a variabele=%RANDOM%Het is duidelijk dat dit geen door de gebruiker gespecificeerde variabele is, dus nemen we de /a op. Koel! Dus nu weten we hoe we een willekeurig getal moeten produceren! Maar hoe willekeurig is het? Het blijkt dat de computer een getal tussen 0 en ergens rond de 37.000 kiest. Ik weet niet zeker wat het exacte getal is. Maar wat als we een kleiner aantal willen? Stel dat we, zoals in deze Instructable, een hanteerbaar aantal willen voor zoiets als een raadspel? Nou, dat is waar het IF-commando binnenkomt ….

Stap 4: De IF- en GOTO-opdrachten. Macht in handen van de batchschrijver

De IF- en GOTO-opdrachten. Macht in handen van de batchschrijver
De IF- en GOTO-opdrachten. Macht in handen van de batchschrijver

We willen dus een beheersbaar aantal produceren. Stel dat we een willekeurig getal tussen 1 en 20 willen produceren. Oké, dat is gemakkelijk gezegd, maar de RANDOM-waarde kiest een getal tussen 1 en 37.000. Daar gaan we IF voor gebruiken. Het IF-commando zegt in feite ALS er iets gebeurt, of ALS iets gelijk is aan, of niet gelijk is aan, een bepaalde waarde, DAN DIT doen. Dus IF stelt voorwaardelijke opdrachten in. We willen een getal produceren dat kleiner is dan twintig, maar groter dan één, natuurlijk beginnen we met de computer te vertellen een willekeurig getal te kiezen, maar dan moeten we hem kunnen vertellen dat hij een nieuw getal moet kiezen. nummer als het gekozen nummer niet aan onze eisen voldoet. Dat is waar het GOTO-commando binnenkomt. GOTO vertelt de computer eenvoudig om naar een bepaald label in de code te gaan. Labels zien er als volgt uit::pick Elk woord dat na een dubbele punt wordt geplaatst, wordt een label waartoe we toegang hebben met het GOTO-commando. Dus als we naar het gedeelte met de code willen gaan met het label "pick" erboven, typen we gewoon:GOTO pickAlright, dus laten we doorgaan met coderen. We hebben de computer al verteld om een willekeurig getal te kiezen, dus we hebben getypt:SET /a answer=%RANDOM%Nu willen we dit getal naar een kleiner bereik brengen. Dus we zullen het IF-commando aanroepen. Iets als dit zou moeten werken:IF %answer% GTR 20 GOTO pickThis vertelt de computer GOTO pick ALS het antwoord GROTER is dan 20. We kunnen ook een van deze voorwaarden op dat IF-commando zetten:EQU - EqualNEQ - Not EqualLSS - Less ThanGTR - Groter ThanLEQ - Kleiner dan of gelijk aan ToGEQ - Groter dan of gelijk aan Dus met IF, GOTO, labels en deze afkortingen kunnen we ons batchbestand op elke gewenste manier manipuleren. Oké, dus we hebben nu ons willekeurig getal onder de twintig, en dit is wat we tot nu toe hebben::pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO pickNow, laten we ervoor zorgen dat de computer het niet doet t kies 0 voor het antwoord.:pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO pickIF $answer% EQU 0 GOTO pickOk! Nu hebben we een bruikbaar getal tussen 1 en 20. Laten we verder gaan met het vlees van de Batch.

Stap 5: Het vlees van ons spel

Het vlees van ons wild
Het vlees van ons wild

Oké, we hebben ons willekeurige nummer. We willen ook tellen hoeveel gissingen onze speler maakt, dus stellen we een andere variabele in: SET /a guessnum=0 Dat zet de geussnum-variabele op nul, en we hebben hem de parameter /a gegeven, zodat we kunnen toevoegen elke keer dat de gebruiker het raadt. Oké. We hebben een willekeurig getal en we hebben het aantal gissingen ingesteld. Nu hebben we wat instructies nodig en hebben we wat gebruikersinvoer nodig voor het gokgetal. Je zou nu het meeste hiervan moeten begrijpen, dus ik zal je gewoon de code laten zien::beginECHO Ik ga een nummer bedenken ECHO Ik denk….. SET /a GuessNum=0(Dit ECHOs die twee regels en zet het aantal gissingen op 0):pickASET /a Answer=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Ik denk aan een getal tussen 1 en 20ECHO Raad eens welk getal ik denk of.(Deze sectie loopt door totdat het ons willekeurige getal SET, en dan ECHO de instructies voor onze speler):RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Mijn nummer is hoger. IF %Guess% GTR %Answer% ECHO Mijn nummer is lager. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO Opnieuw proberen (Deze sectie vertelt de computer om gebruikersinvoer te vragen, en herhaalt vervolgens continu totdat de gebruiker de juiste nummer. Dan GAAT het NAAR het label EINDE):ENDECHO Je hebt gelijk! Het antwoord was %Answer%ECHO Het duurde %GuessNum% Guesses. ECHO. PAUSECLSECHO Wil je nog een keer spelen?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(Hier is ons eindgedeelte. Dit vertelt de gebruiker hoeveel keer ze hebben geraden en vraagt vervolgens of ze om opnieuw te spelen. Merk op dat we de EQU, GTR en LSS ook met letters kunnen gebruiken.) Oké! Als je deze code gewoon zou kopiëren, zou je een legitiem raadspel hebben. Niet echt luxe, maar hey, het is beter dan de meeste mensen kunnen doen. Maar we gaan er een kleine draai aan toevoegen, gewoon om het interessant te maken….

Stap 6: De twist

De twist
De twist
De twist
De twist
De twist
De twist

We hebben nu een werkende game, maar we willen het een beetje interessanter maken. Hoe zit het met het toevoegen van een stimulans voor onze speler om het juiste nummer te raden? Wat als we iets doen als… hun computer afsluiten als ze het nummer niet raden? Dat zou best gaaf zijn! Oké, nu voegen we een kleine code toe om deze wijzigingen aan te brengen. Eerst gaan we een regel toevoegen aan het gedeelte met code dat we 'opnieuw proberen' hebben genoemd. Dus ga die sectie zoeken. Het ziet er als volgt uit::RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Mijn nummer is hoger. IF %Guess% GTR %Answer% ECHO Mijn nummer is lager. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO Opnieuw proberenOk, we gaan deze regel direct na de "ECHO" toevoegen. (Als we een punt achter ECHO zetten, blijft er een lege regel achter.) Hier is de nieuwe code:IF %GuessNum% EQU 4 GOTO shutdownGAls we deze regel toevoegen, ziet de sectie er als volgt uit::RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Mijn nummer is hoger. IF %Guess% GTR %Answer% ECHO Mijn nummer is lager. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO Opnieuw proberen Het zou nu vrij duidelijk moeten zijn wat dit doet. Het vertelt de computer dat als GuessNum EQUals 4 is, het naar het gedeelte van de code met het label "shutdownG" moet gaan. Dus, wat willen we dat deze afsluitsectie zegt? Welnu, het moet duidelijk het label "shutdownG" hebben. Vervolgens moet het de computer afsluiten. Het commando om af te sluiten is "SHUTDOWN -s". Hierdoor wordt de computer uitgeschakeld, maar we willen wat toevoegen aan de opdracht. We voegen een "-f" toe. Dat dwingt alle programma's te sluiten en we voegen een "-t 60" toe. Dat zal de computer vertellen om een venster weer te geven en zestig seconden te wachten om te sluiten. We zullen ook "-c "bericht hier" toevoegen. die een bericht in het afsluitvenster zal weergeven. Na ons shutdown-commando gaan we over op dezelfde code die we hierboven hebben, de code waarmee onze speler nummers kan kiezen en feedback geeft. Dus onze shutdown-code ziet er nu als volgt uit::shutdownGSHUTDOWN -s -f -t 60 -c "Blijf raden! Als u het juiste getal niet raadt, wordt de computer afgesloten!":shutdownG1SET /p Guess=IF %Guess% LSS %Answer% ECHO Mijn nummer is hoger. IF %Guess% GTR %Answer % ECHO Mijn nummer is lager. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO shutdownG1Nu hebben we de computer op SHUTDOWN gezet en een bericht weergegeven, maar we moeten ook de computer om het afsluiten te stoppen, als het is gestart. Dus we zullen dat toevoegen aan het gedeelte van de codering met het label "end". Dat gedeelte ziet er als volgt uit::ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Je hebt gelijk! Het antwoord was %Answer%ECHO Het duurde %GuessNum% Guesses. ECHO. PAUSECLSECHO Wil je nog een keer spelen?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 playagainWe willen het afsluiten stoppen, en we doen dat met het "SHUTDOWN -a" commando. We voegen dus een regel toe die als volgt gaat: IF %GuessNum% GTR 4 SHUTDOWN -aWe voegen dat commando direct na het label toe, en dat zal de computer vertellen om het SHUTDOWN -a commando alleen uit te voeren als de speler maakte meer dan vier keer raden, en begon een shutdown. Oke! je zou je spel nu moeten hebben! WE zullen ervoor zorgen dat er geen bugs zijn in de volgende stap.

Stap 7: Laatste stappen

Laatste stappen
Laatste stappen

Oké, als je nu al die codering aan elkaar rijgt, dan heb je iets dat er ongeveer zo uitziet::beginECHO Ik ga een nummer bedenkenECHO Ik denk….. SET /a GuessNum=0:pickASET / a Answer=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Ik denk aan een getal tussen 1 en 20ECHO Raad eens aan welk getal ik denk.:RetrySET /p Guess=IF %Guess % LSS %Answer% ECHO Mijn nummer is hoger. IF %Guess% GTR %Answer% ECHO Mijn nummer is lager. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO Opnieuw proberen:ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Je hebt gelijk! Het antwoord was %Answer%ECHO Het duurde %GuessNum% Guesses. ECHO. PAUSECLSECHO Wil je nog een keer spelen?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 Bedankt voor het spelen!PAUSEEXIT cmd:shutdownGSHUTDOWN -s -f -t 60 -c "Blijf raden ! Als u het juiste getal niet raadt, wordt de computer afgesloten!":shutdownG1SET /p Guess=IF %Guess% LSS %Answer% ECHO Mijn nummer is hoger. IF %Guess% GTR %Answer% ECHO Mijn nummer is Lower. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO shutdownG1Dat zou toch alles moeten zijn wat we nodig hebben? Dus ga je gang en sla dat kladblok.txt-bestand dat je hebt op als GuessGame.bat. Eigenlijk kun je het noemen wat je wilt, zolang je de.bat maar aan het einde zet. Oké, dus klik op het pictogram en start het programma! Werkte het? Nou ja hoor. Hij doet rare dingen, niet? Het blijkt dat wanneer we een batch als deze schrijven, de opdrachtprompt ECHO elke opdracht die we eraan geven overneemt, net alsof we ze in de opdrachtprompt hebben getypt. Dus het spel werkt, maar het is een beetje rommelig en onduidelijk. Kunnen wij hier iets aan doen? Ja! Het enige wat we hoeven te doen is deze regel in te typen aan het begin van onze code:@ECHO OFFDit vertelt de computer om de ECHO UIT te zetten. En het @-teken bij het bedelen vertelt het om de ECHO uit te schakelen voor elk commando. Als we dat @ weglaten, zou de ECHO slechts voor één opdracht worden uitgeschakeld.

Stap 8: Alles klaar

Gefeliciteerd! Je hebt zojuist een Batch-bestandsspel geschreven. Vrij eenvoudig is het niet? Als je dit aankunt, kun je erachter komen hoe je behoorlijk wat kunt doen met batchbestanden. Speel er gewoon mee, doe wat experimenten. Voor het geval je iets niet zou kunnen laten werken, of voor het geval ik iets heb weggelaten in al die codering, zal ik je het bestand hier geven.

Aanbevolen: