Les langages de programmation

Venez apprendre les langages de programmation à votre rythme
 
AccueilGalerieCalendrierFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 Cours N°12 : La commande SETLOCAL

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Groovitron
Professeur
Professeur


Nombre de messages : 201
Réputation : 4
Date d'inscription : 20/07/2010

MessageSujet: Cours N°12 : La commande SETLOCAL   Jeu 23 Juin - 19:43

Bonjour tout le monde !


Note importante : Dorénavant je vous conseil d'ouvrir vos fichier BATCH avec notepad++.

Dans ce cours je vais vous expliquer comment se servir de la commande SETLOCAL ENABLEDELAYEDEXPANSION .

Imaginons un programme simple:

Tester le !

Code:

@ECHO OFF

REM Quelques valeurs :

SET Choix=0

SET valeur1=12
SET valeur2=45
SET valeur3=31

SET valeurAafficher=0

SET /P Choix=Votre choix : (tapez 1, 2 ou 3)
SET /A valeurAafficher=valeur%Choix%

REM si vous avez tapez 1 le programme va voir :
REM SET /A valeurAafficher=valeur1
REM et il va prendre la valeur que contient valeur1.

ECHO.valeur que vous avez choisi : valeur%Choix% et elle contient %valeurAafficher%

PAUSE

Note : Noter que ce programme n'est pas protégé des gens qui entrerai n'importe quoi dans Choix

Maintenant remplacer les valeurs contenu dans valeur1,2 et 3 par des mots :


Code:

@ECHO OFF

REM Quelques valeurs :

SET Choix=0

SET valeur1=Exemple1
SET valeur2=Exemple2
SET valeur3=Exemple3

SET valeurAafficher=0

SET /P Choix=Votre choix : (tapez 1, 2 ou 3)
SET /A valeurAafficher=valeur%Choix%

REM si vous avez tapez 1 le programme va voir :
REM SET /A valeurAafficher=valeur1
REM et il va prendre la valeur que contient valeur1.

ECHO.valeur que vous avez choisi : valeur%Choix% et elle contient %valeurAafficher%

PAUSE

D'aprés ce qu'on a vu tout a l'heure cela devrai m'afficher Exemple1,Exemple1 ou Exemple3.

Mais non !

Il affiche toujours zéro.


Explication:

La première fois les variables contenaient des numéros.
Dans le second teste les variables contiennent de(s) lettre(s)

donc si je rentre 1 dans Choix :

Le programme voit ceci :
SET /A valeurAafficher=valeur%Choix%

puis remplacement de Choix:
SET /A valeurAafficher=valeur1

puis il prend son contenu :
SET /A valeurAafficher=Exemple1

Or le "numéro" Exemple1 n'est pas un numéro, ce sont des lettres,
la variable valeurAafficher est donc mise à zéro.

valeurAafficher=0




Mais comment faire ?!


Tout "simplement" avec la commande SETLOCAL.

fonctionnement :
Je me permet de vous rappeler que les caractères qui servent à lire les variables sont ... les % (pourcent).

Preuve :
Code:

@ECHO OFF

SET valeur=Bonjour

ECHO.%valeur%

PAUSE

La commande SETLOCAL permet de rajouter un caractère de lecture.

Le ! (point d'exclamation)




Et maintenant :

Code:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

REM Quelques valeurs :

SET Choix=0

SET valeur1=Exemple1
SET valeur2=Exemple2
SET valeur3=Exemple3

SET valeurAafficher=0

SET /P Choix=Votre choix : (tapez 1, 2 ou 3)

ECHO.valeur que vous avez choisi : valeur%Choix% et elle contient !valeur%Choix%!

PAUSE

La commande SETLOCAL ENABLEDELAYEDEXPANSION ne sert pas qu'à faire ceci elle modifie encore d'autre choses mais je n'en parlerai pas dans ce cours.

Quand on écrit :
Code:

SETLOCAL ENABLEDELAYEDEXPANSION

On dit que SETLOCAL est la commande qui reçoit en paramètre ENABLEDELAYEDEXPANSION.

ENABLEDELAYEDEXPANSION est donc un paramètre pour la commande SETLOCAL
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
zephir
Jeune Programmeur
Jeune Programmeur


Nombre de messages : 30
Age : 25
Réputation : 11
Date d'inscription : 19/05/2013

MessageSujet: Re: Cours N°12 : La commande SETLOCAL   Dim 19 Mai - 23:02

tres bien expliquer merci encor pour tes cours cependant il y a autre chose qui change..

quand j’utilise donc la commande "SETLOCAL ENABLEDELAYEDEXPANSION" et les "!" pour "!valeur%Choix%!" le faite de tapez autre chose que "1,2,3" ne remet pas la valeur 0 a la place donc de "!valeur%Choix%!" pour quoi ?

sinon je dévores tes cours avec plaisir encore merci Smile

_________________


Twisted Evil Zephir∴ /Z|->_S-V.P.M.C_< -|Я Twisted Evil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
benjiof76
Nouveau Programmeur
Nouveau Programmeur


Nombre de messages : 2
Réputation : 10
Date d'inscription : 20/05/2013

MessageSujet: Re: Cours N°12 : La commande SETLOCAL   Lun 20 Mai - 13:27

Bonjour !
Pourriez-vous m'aider car je n'arrive pas à afficher une variable qui contient du texte. Pourriez-vous m'expliquer ?

Cordialement.
Code:

REM --- Début de batch standard ---
@echo off
cls

if not "%os%"=="Windows_NT" goto NextStep
REM --- Personnalisation de la fenêtre CMD ---
Title Menu MCMV
color 02
REM MODE CON: COLS=47 LINES=23
:NextStep
SETLOCAL ENABLEDELAYEDEXPANSION
:ret
cls
echo.
echo      ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo      º                                º
echo      º                                º
echo      º    Minecraft Multi-Version    º
echo      º                                º
echo      º                                º
echo      ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
IF /I "%nb%"=="" (
SET /P nb= [M]ulti ou [S]olo ? :
IF /I "%nb%"=="" set nb=M
IF /I "%nb%"=="M" set rep1=multi
IF /I "%nb%"=="S" set rep1=solo
goto ret )
echo !rep1!
pause>nul

IF /I "%mods%"=="" (
SET /P mods= [A]vec ou [S]ans mods ? :
IF /I "%mods%"=="" set mods=A
IF /I "%mods%"=="A" set rep2=Avec
IF /I "%mods%"=="S" set rep2=Sans
goto ret )

IF "%ver%"=="" (
echo      Versions disponibles :
echo      - 1.2.5 [Taper 1 ou entr‚e]
echo      - 1.4.7 [Taper 2]
echo      - 1.5.0 [Taper 3]
echo      - 1.5.1 [Taper 4]
echo.
SET /P ver= version ? :
if "%ver%"=="" set ver=1
if "%ver%"=="1" set rep3=1.2.5
if "%ver%"=="2" set rep3=1.4.7
if "%ver%"=="3" set rep3=1.5.0
if "%ver%"=="4" set rep3=1.5.1
goto ret
)
echo V‚rification :
if /I "%rep1%"=="multi" echo Multi
echo %rep2%
echo %rep3%
pause>nul)


Trouvé ! : je n'avais pas mis la variable %nb% en !nb! (c'est du texte donc le DOS ne retient pas le contenu de cette variable)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Groovitron
Professeur
Professeur


Nombre de messages : 201
Réputation : 4
Date d'inscription : 20/07/2010

MessageSujet: Re: Cours N°12 : La commande SETLOCAL   Lun 20 Mai - 14:08

zephir a écrit:
tres bien expliquer merci encor pour tes cours cependant il y a autre chose qui change.. quand j’utilise donc la commande "SETLOCAL ENABLEDELAYEDEXPANSION" et les "!" pour "!valeur%Choix%!" le faite de tapez autre chose que "1,2,3" ne remet pas la valeur 0 a la place donc de "!valeur%Choix%!" pour quoi ? sinon je dévores tes cours avec plaisir encore merci Smile
Elle remet pas 0 car il s'agit d'une variable non déclarer, afficher une variable non déclarer affichera une chaine vide, La solution serai de faire un SET /A avant, si la variable concerné ne contiens que des chiffres ... PS : Ravis d'avoir pu t'aider [Vous devez être inscrit et connecté pour voir ce lien] ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
zephir
Jeune Programmeur
Jeune Programmeur


Nombre de messages : 30
Age : 25
Réputation : 11
Date d'inscription : 19/05/2013

MessageSujet: Re: Cours N°12 : La commande SETLOCAL   Lun 20 Mai - 15:29

ok merci Groovitron Smile

_________________


Twisted Evil Zephir∴ /Z|->_S-V.P.M.C_< -|Я Twisted Evil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Cours N°12 : La commande SETLOCAL   

Revenir en haut Aller en bas
 
Cours N°12 : La commande SETLOCAL
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» commande en cours de validation
» [Résolu] Commande cmd
» commande menu "Enregistrer"
» Commande et retrosignalisation d'aiguilles + RRTC
» nouvelle commande

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Les langages de programmation :: Les Cours de Programmation :: Cours de BATCH (.bat)-
Sauter vers: