Table des matières:

Fichiers batch : quelques notions de base.. : 8 étapes
Fichiers batch : quelques notions de base.. : 8 étapes

Vidéo: Fichiers batch : quelques notions de base.. : 8 étapes

Vidéo: Fichiers batch : quelques notions de base.. : 8 étapes
Vidéo: Systèmes de fichiers 2024, Septembre
Anonim
Fichiers batch: quelques notions de base…
Fichiers batch: quelques notions de base…

Ce Instructable vous apprendra quelques bases de l'écriture de fichiers batch et vous montrera comment créer un jeu de devinettes avec quelques rebondissements, juste pour garder les choses intéressantes…

J'ai appris la plupart de mes compétences en invite de commande et toutes mes écritures par lots à partir d'Internet en général, et d'Instuctables en particulier. Je voudrais remercier l'utilisateur d'Instructables Neodudeman pour ses excellents Instructables sur l'écriture par lots. Merci!

Étape 1: Qu'est-ce qu'un fichier batch ?

Qu'est-ce qu'un fichier batch ?
Qu'est-ce qu'un fichier batch ?

Eh bien, la plupart de mes lecteurs savent probablement déjà ce qu'est un fichier batch, mais juste au cas où….

Un fichier de commandes est simplement une collection (lot) de commandes MSDOS qui s'exécutent séquentiellement lorsque vous exécutez le fichier de commandes. Les fichiers batch commencent en tant que fichiers.txt dans le bloc-notes et deviennent des fichiers exécutables lorsque vous les enregistrez en tant que quelque chose avec une extension.bat. Donc, fondamentalement, tout ce que vous faites est d'écrire un fichier dans le Bloc-notes, puis de l'enregistrer sous, disons, "instructable.bat". Une fois que le.bat est placé à la fin du nom de fichier, un joli nouveau fichier apparaîtra, nommé comme vous l'avez nommé, avec une belle icône ressemblant à un engrenage. Bon, maintenant que nous savons ce que sont ces fichiers batch, passons à l'écriture !

Étape 2: Commandes de base

Commandes de base
Commandes de base
Commandes de base
Commandes de base
Commandes de base
Commandes de base
Commandes de base
Commandes de base

Très bien, vous allez devoir apprendre quelques commandes. Alors d'abord, ouvrez l'invite de commande MSDOS. Ouvrez la fenêtre de démarrage, cliquez sur Exécuter, tapez "cmd.exe" puis cliquez sur Exécuter. D'accord. Tout d'abord, nous allons examiner les variables. Les variables sont des nombres, des mots ou d'autres choses qui varient (un peu évidemment). L'invite de commande a une fonction variable. Certaines variables sont déjà définies, telles que TIME, DATE et quelques autres. La plupart des variables, cependant, vous pouvez les définir vous-même. Cliquez sur la fenêtre d'invite de commandes et tapez: SET variable=random Cela n'a pas vraiment d'importance si vous mettez le "SET" en majuscule ou non, mais j'aime mettre en majuscule toutes mes commandes, en particulier lors de l'écriture de fichiers batch. Cela permet simplement de dire plus facilement ce que vous faites. Maintenant, appuyez sur Entrée. Bien pour vous! Vous avez défini votre première variable ! Mais que pouvons-nous en faire ? qui se soucie si tout ce que nous pouvons faire est de définir la variable correctement ? Eh bien, il s'avère que nous pouvons faire beaucoup plus que cela, mais d'abord, essayons simplement de faire en sorte que l'ordinateur nous dise en quoi la variable est définie. D'accord, pour que l'ordinateur lise la valeur d'une variable, nous tapons le nom de la variable, dans ce cas, "variable" et mettons le nom entre les marques %, comme ceci: %variable%. Allez-y, saisissez-le et appuyez sur Entrée: %variable%Erreur étrange, hein ? L'ordinateur a déclaré "" la variable " n'est pas reconnue comme une commande interne ou externe, un programme opérationnel ou un fichier de commandes ". Alors pourquoi a-t-il donné cette erreur? Eh bien, en gros, cela a donné cette erreur car l'invite de commande traite la valeur de cette variable comme si vous l'aviez saisie vous-même. Ainsi, lorsque vous avez tapé %variable%, l'ordinateur a pensé que vous lui disiez d'exécuter la commande "aléatoire". Évidemment, nous avons besoin d'autre chose pour voir la valeur de notre variable. C'est là qu'intervient la commande ECHO. La commande ECHO indique simplement à l'invite de commande de faire écho, ou de dire, tout ce que vous avez tapé après ECHO. Donc, si nous tapons la commande ECHO avant notre variable, nous devrions obtenir ce que nous voulons: ECHO %variable%There ! Maintenant, nous avons ce que nous voulons ! L'ordinateur imprime "aléatoirement". Évidemment, c'était la valeur que nous avons tapée pour notre variable, c'est donc le résultat que nous voulions. Dans l'étape suivante, nous en apprendrons davantage sur les variables et comment nous pouvons les utiliser.

Étape 3: Utilisation de la commande SET et des variables

Utilisation de la commande SET et des variables
Utilisation de la commande SET et des variables
Utilisation de la commande SET et des variables
Utilisation de la commande SET et des variables

Bon, maintenant que nous savons ce que sont les variables, que pouvons-nous faire d'autre avec elles ? Eh bien, nous pouvons faire des mathématiques, nous pouvons les utiliser comme conditions pour écrire des programmes et des fichiers batch, nous pouvons effectuer des calculs de base, nous pouvons exécuter des commandes, et bien plus encore. Nous n'entrerons pas dans tout ce que vous pouvez faire avec les variables, mais nous discuterons de certains aspects importants de la fonction variable. Premièrement, la commande SET en elle-même ne produit que des variables de chaîne. Cela signifie qu'il n'ajoutera ni ne fera aucun autre calcul. Si vous deviez dire à l'ordinateur d'ajouter 1 à une variable avec une valeur de 1, cela vous donnerait la valeur 1+1. Si nous voulons qu'il ajoute réellement les deux nombres, nous devons placer un "/a" après la commande SET. Pour cela, nous tapons:SET /a variable=(value)Maintenant, supposons que nous voulions mettre une variable dans notre fichier batch que l'utilisateur fournira. Nous pourrions vouloir le faire si nous calculions des valeurs selon une formule ou, dans notre cas, si nous voulons que l'utilisateur devine un nombre que l'ordinateur a trouvé. Pour générer une variable spécifiée par l'utilisateur, nous ajoutons un /p après la commande SET, et nous laissons la zone après = vide:SET /p variable=Voilà ! Une variable spécifiée par l'utilisateur ! Si nous devions mettre cette ligne dans un fichier batch, le batch s'exécuterait jusqu'à ce qu'il atteigne cette ligne, puis il attendrait la saisie de l'utilisateur avant de continuer. L'autre avantage du /p est qu'il annule complètement le /a. Lorsque nous incluons un /p, nous pouvons simplement omettre le /a. La prochaine chose que nous apprendrons à ce sujet produit des variables aléatoires. Si nous voulons que l'ordinateur choisisse un nombre aléatoire pour une variable, nous tapons simplement la commande SET, suivie de la variable, puis définissons la variable sur %RANDOM%. Encore une fois, ça n'a pas besoin d'être capital, mais j'aime le faire quand même. Donc, nous tapons:SET /a variable=%RANDOM%Evidemment, ce n'est pas une variable spécifiée par l'utilisateur, nous incluons donc le /a. Frais! Alors maintenant, nous savons comment produire un nombre aléatoire ! Mais à quel point est-ce aléatoire ? Eh bien, il s'avère que l'ordinateur choisit un nombre entre 0 et quelque part autour de 37 000. Je ne sais pas quel est le nombre exact. Mais que se passe-t-il si nous voulons un plus petit nombre? Supposons, comme dans ce Instructable, que nous voulions un nombre gérable pour quelque chose comme un jeu de devinettes ? Eh bien, c'est là qu'intervient la commande IF….

Étape 4: Les commandes IF et GOTO. Le pouvoir entre les mains du Batch Writer

Les commandes IF et GOTO. Le pouvoir entre les mains du Batch Writer
Les commandes IF et GOTO. Le pouvoir entre les mains du Batch Writer

Donc, nous voulons produire un nombre gérable. Supposons que nous voulions produire un nombre aléatoire entre 1 et 20. D'accord, c'est facile à dire, mais la valeur RANDOM choisit un nombre entre 1 et 37 000. C'est pour cela que nous allons utiliser IF. La commande IF dit essentiellement SI quelque chose se produit, ou SI quelque chose est égal ou non à une certaine valeur, ALORS faites CECI. Ainsi, IF définit des commandes conditionnelles. Nous voulons produire un nombre inférieur à vingt, mais supérieur à un, évidemment, nous commencerons par dire à l'ordinateur de choisir un nombre aléatoire, mais nous devrons ensuite pouvoir lui dire de choisir un nouveau numéro si le numéro qu'il choisit ne correspond pas à nos exigences. C'est là qu'intervient la commande GOTO. GOTO indique simplement à l'ordinateur d'ALLER À une certaine étiquette dans le code. Les étiquettes ressemblent à ceci:: pickTout mot placé après deux points devient une étiquette à laquelle nous pouvons accéder avec la commande GOTO. Donc, si nous voulons aller à la section de code avec l'étiquette "choisir" au-dessus, nous tapons simplement:GOTO pickAlright, alors continuons notre codage. Nous avons déjà dit à l'ordinateur de choisir un nombre aléatoire, nous avons donc tapé: SET /a answer=%RANDOM%Maintenant, nous voulons réduire ce nombre à une plage plus petite. Nous allons donc invoquer la commande IF. Quelque chose comme ceci devrait faire l'affaire:IF %answer% GTR 20 GOTO pickThis indique à l'ordinateur de GOTO pick SI la réponse est SUPERIEURE à 20. Nous pourrions également mettre l'une de ces conditions sur cette commande IF:EQU - EqualNEQ - Not EqualLSS - Less ThanGTR - Supérieur àLEQ - Inférieur ou égal à ToGEQ - Supérieur ou égal à Ainsi, avec IF, GOTO, les étiquettes et ces abréviations, nous pouvons manipuler notre fichier batch comme bon nous semble. D'accord, nous avons donc notre nombre aléatoire inférieur à vingt maintenant, et voici ce que nous avons jusqu'à présent:: pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO pickMaintenant, assurons-nous que l'ordinateur ne ' t choisissez 0 pour la réponse.:pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO pickIF $answer% EQU 0 GOTO pickOkay ! Maintenant, nous avons un nombre utilisable entre 1 et 20. Passons à la viande du lot.

Étape 5: La viande de notre gibier

La viande de notre gibier
La viande de notre gibier

D'accord, nous avons notre nombre aléatoire. Nous voulons aussi compter le nombre de suppositions que notre joueur fait, nous allons donc définir une autre variable: à chaque fois que l'utilisateur devine. Nous avons un nombre aléatoire et nous avons défini le nombre de suppositions. Maintenant, nous avons besoin d'instructions et nous avons besoin d'une entrée utilisateur pour le nombre deviné. Vous devriez comprendre la plupart de cela maintenant, alors je vais juste vous montrer le code::beginECHO Je vais penser à un nombreECHO je pense….. SET /a GuessNum=0(Ceci fait écho à ces deux lignes et définit le nombre de suppositions à 0):pickASET /a Answer=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Je pense à un nombre entre 1 et 20ECHO Devinez à quel numéro je pense of.(Cette section boucle jusqu'à ce qu'elle définisse notre nombre aléatoire, puis ÉCHO les instructions pour notre lecteur):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 Retry(Cette section indique à l'ordinateur de demander l'entrée de l'utilisateur, puis boucle en continu jusqu'à ce que l'utilisateur sélectionne le numéro correct. Ensuite, il VA jusqu'à l'étiquette FIN):ENDECHO Vous avez raison ! La réponse était %Answer%ECHO Il a fallu %GuessNum% Guesses. ECHO. PAUSECLSECHO Souhaitez-vous jouer à nouveau ?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 (Voici notre section finale. Cela indique à l'utilisateur combien de suppositions il a fait, puis lui demande s'il aimerait Notez que nous pouvons également utiliser EQU, GTR et LSS avec des lettres.) D'accord ! Si vous copiiez simplement ce code, vous auriez un jeu de devinettes légitime. Pas vraiment chic, mais bon, c'est mieux que ce que la plupart des gens peuvent faire. Mais nous allons ajouter une petite touche, juste pour rendre les choses intéressantes….

Étape 6: La torsion

La torsion
La torsion
La torsion
La torsion
La torsion
La torsion

Maintenant, nous avons un jeu qui fonctionne en ce moment, mais nous voulons le rendre un peu plus intéressant. Que diriez-vous d'ajouter une incitation à notre joueur pour deviner le bon numéro ? Et si nous faisions quelque chose comme… éteindre leur ordinateur s'ils ne devinent pas le nombre ? Ce serait plutôt cool ! D'accord, nous allons maintenant ajouter un petit code pour effectuer ces modifications. Tout d'abord, nous allons ajouter une ligne à la section de code que nous avons étiquetée "réessayer". Allez donc chercher cette section. Cela ressemble à ceci:: 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, nous allons ajouter cette ligne juste après le "ECHO". (Lorsque nous mettons un point après ECHO, il laisse une ligne vide.) Voici le nouveau code:IF %GuessNum% EQU 4 GOTO shutdownGQuand nous ajoutons cette ligne, la section ressemble à ceci::RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Mon numéro est supérieur. IF %Guess% GTR %Answer% ECHO Mon numéro est inférieur. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO RetryÀ présent, ce que cela fait devrait être assez évident. Il indique à l'ordinateur que si GuessNum est égal à 4, il doit aller à la section de code intitulée "shutdownG". Alors, que voulons-nous que cette section d'arrêt dise ? Eh bien, évidemment, il doit être étiqueté "shutdownG". Ensuite, il doit éteindre l'ordinateur. La commande d'arrêt est "SHUTDOWN -s". Cela arrêtera l'ordinateur, mais nous voulons en ajouter à la commande. Nous allons ajouter un "-f". Cela forcera la fermeture de tous les programmes et nous ajouterons un "-t 60". Cela indiquera à l'ordinateur d'afficher une fenêtre et d'attendre soixante secondes pour se fermer. Nous ajouterons également "-c "message here"". qui affichera un message dans la fenêtre d'arrêt. Après notre commande d'arrêt, nous utiliserons le même code que nous avons ci-dessus, le code qui permet à notre joueur de choisir des nombres et leur donne un retour. Notre code d'arrêt ressemble donc maintenant à ceci:: shutdownGSHUTDOWN -s -f -t 60 -c "Continuez à deviner ! Si vous ne devinez pas le bon numéro, l'ordinateur s'arrêtera !":shutdownG1SET /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 shutdownG1Maintenant, nous avons réglé l'ordinateur sur SHUTDOWN et affiché un message, mais nous devons également dire au ordinateur pour arrêter l'arrêt, s'il a été initié. Nous allons donc ajouter cela à la section de codage intitulée "fin". Cette section ressemble à ceci:: ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Vous avez raison ! La réponse était %Answer%ECHO Il a fallu %GuessNum% Guesses. ECHO. PAUSECLSECHO Souhaitez-vous jouer à nouveau ?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 playagainNous voulons arrêter l'arrêt, et nous le faisons avec la commande "SHUTDOWN -a". Donc, nous allons ajouter une ligne qui ressemble à ceci: IF %GuessNum% GTR 4 SHUTDOWN -aNous ajouterons cette commande juste après l'étiquette, et cela indiquera à l'ordinateur d'exécuter la commande SHUTDOWN -a uniquement si le joueur a a fait plus de quatre suppositions et a commencé un arrêt. D'accord! vous devriez avoir terminé votre jeu maintenant ! NOUS nous assurerons qu'il n'y a pas de bugs à l'étape suivante.

Étape 7: Étapes finales

Étapes finales
Étapes finales

Bon, maintenant si vous enchaînez tout ce codage, alors vous aurez quelque chose qui ressemble à quelque chose comme ça::beginECHO Je vais penser à un nombreECHO je pense….. SET /a GuessNum=0:pickASET / a Answer=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Je pense à un nombre entre 1 et 20ECHO Devinez à quel nombre je pense.:RetrySET /p Devinez=IF %Devinez % LSS %Answer% ECHO Mon numéro est supérieur. IF %Guess% GTR %Answer% ECHO Mon numéro est inférieur. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO Retry:ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Vous avez raison ! La réponse était %Answer%ECHO Il a fallu %GuessNum% Guesses. ECHO. PAUSECLSECHO Souhaitez-vous jouer à nouveau ?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 Merci d'avoir joué !PAUSEEXIT cmd:shutdownGSHUTDOWN -s -f -t 60 -c "Continuez à deviner ! Si vous ne devinez pas le bon numéro, l'ordinateur s'arrêtera!":shutdownG1SET /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 shutdownG1Cela devrait être tout ce dont nous avons besoin, n'est-ce pas ? Alors, allez-y et enregistrez le fichier.txt du bloc-notes que vous avez sous le nom GuessGame.bat. En fait, vous pouvez le nommer comme vous voulez, tant que vous mettez le.bat à la fin. D'accord, alors cliquez sur l'icône et lancez le programme ! Cela a-t-il fonctionné ? Eh bien en quelque sorte. Ça fait des trucs bizarres non ? Il s'avère que lorsque nous écrivons un lot comme celui-ci, l'invite de commande fait écho à chaque commande que nous lui donnons, comme si nous les tapions dans l'invite de commande. Donc le jeu fonctionne, mais c'est un peu brouillon et peu clair. Pouvons-nous faire quelque chose à ce sujet? Ouais! Tout ce que nous avons à faire est de taper cette ligne au tout début de notre code: @ECHO OFFCela indique à l'ordinateur de désactiver l'ECHO. Et le signe @ à la mendicité lui dit d'éteindre l'ECHO pour chaque commande. Si nous laissons ce @ de côté, cela ne désactiverait l'ECHO que pour une seule commande.

Étape 8: Tout est fait

Toutes nos félicitations! Vous venez d'écrire un jeu de fichiers batch. Assez simple n'est-ce pas? Si vous pouvez gérer cela, alors vous pouvez comprendre comment faire un peu avec les fichiers batch. Jouez avec, faites des expériences. Juste au cas où vous ne pourriez pas faire fonctionner quelque chose, ou au cas où j'aurais oublié quelque chose dans tout ce codage, je vous donnerai le fichier ici.

Conseillé: