Les langages de programmation
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Les langages de programmation

Venez apprendre les langages de programmation à votre rythme
 
AccueilGalerieRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -40%
-40% sur le Pack Gaming Mario PDP Manette filaire + ...
Voir le deal
29.99 €

 

 Cours N°12 : La commande SETLOCAL

Aller en bas 
3 participants
AuteurMessage
Groovitron
Professeur
Professeur
Groovitron


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

Cours N°12 : La commande SETLOCAL Empty
MessageSujet: Cours N°12 : La commande SETLOCAL   Cours N°12 : La commande SETLOCAL Icon_minitimeJeu 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
zephir
Jeune Programmeur
Jeune Programmeur
zephir


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

Cours N°12 : La commande SETLOCAL Empty
MessageSujet: Re: Cours N°12 : La commande SETLOCAL   Cours N°12 : La commande SETLOCAL Icon_minitimeDim 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
Revenir en haut Aller en bas
benjiof76
Nouveau Programmeur
Nouveau Programmeur



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

Cours N°12 : La commande SETLOCAL Empty
MessageSujet: Re: Cours N°12 : La commande SETLOCAL   Cours N°12 : La commande SETLOCAL Icon_minitimeLun 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
Groovitron
Professeur
Professeur
Groovitron


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

Cours N°12 : La commande SETLOCAL Empty
MessageSujet: Re: Cours N°12 : La commande SETLOCAL   Cours N°12 : La commande SETLOCAL Icon_minitimeLun 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
zephir
Jeune Programmeur
Jeune Programmeur
zephir


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

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

ok merci Groovitron Smile
Revenir en haut Aller en bas
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
Cours N°12 : La commande SETLOCAL
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Cours N°14 : Une commande externe importante
» La commande ECHO
» Cour n°08 Commande shutdown
» Résumer - La commande SET
» Commande: debug

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: