🏠 Home
⏎ Back

⏹ SET

Affectation d'une valeur à une variable

L'instruction SET permet d'assigner des valeurs à des variables.

Il n’est pas strictement nécessaire d’ajouter des guillemets autour de l'affectation, même lors de l’affectation d’une valeur contenant des espaces.

Mettre les guillemets est une bonne pratique pour gérer les espaces et caractères spéciaux.

Les guillemets ne font pas partie du contenu de la variable.

La longueur maximale d'une variable de type chaine ne doit pas excéder 8191 caractères.

Documentation officielle Microsoft
::EXEMPLE SET

::AFFECTATION ENCADREE PAR DES GUILLEMETS "
SET "STR=C'est une chaine avec 1 guillemet ""
ECHO %STR%

::AFFECTATION CLASSIQUE
SET STR=C'est une chaine avec 1 guillemet "
ECHO %STR%

::AFFECTATION AVEC 3 Espaces
SET STR=C'est une chaine avec 3 espaces à la fin   
ECHO %STR%*
PAUSE
En image

Affection par saisie utilisateur

L’option /P permet d’affecter à une variable la ligne de texte saisie par l’utilisateur.

Le message indiqué s’affiche avant la saisie.

Utilisez SET /P variable=message

SET /P STR=Entrez votre age :
Entrez votre age : 20
ECHO %STR%
20
En image

💡

La commande standard ECHO ajoute toujours un retour chariot (CR/LF) à la fin de chaque texte affiché. Ce qui passe à la ligne suivante.

La commande SET /P peut être utiliser pour afficher du texte sans retour à la ligne.

::EXEMPLE SET POUR AFFICHER UN TEXTE SANS CR/LF
ECHO Ligne 1
ECHO Ligne 2
SET /P STR="Ligne 3" < NUL
ECHO Ligne 4
PAUSE
En image

Affectation arythmétique

La commande SET /A permet de réaliser des affectations arythmétiques et évalue des calculs sur nombre entiers.

💡 Les entiers sont codés en 32 bit signé.

La plage de valeur s'étend entre -2 147 483 648 jusqu'à 2 147 483 647

⚠ Tout calcul sur nombre à virgule renverra l'entier le plus proche dans le terminal.

Lors de l'affection d'une expression arytmétique, on peut utiliser 2 styles d'écritures :

1) SET /A RESULTAT = %VAR1% + %VAR2%

2) SET /A RESULTAT = "VAR1 + VAR2"

La 2éme dispense l'utilisation des % autour des variables.

::EXEMPLE SET CALCUL
SET /A X=10
SET /A Y=3
SET /A RESULT=%X%/%Y%
ECHO %X% / %Y% = %RESULT%

::UNE AUTRE FACON D'EVALUER
SET /A RESULT="X*Y"
ECHO %X% * %Y% = %RESULT%
PAUSE
En image

Liste des nombres premiers

Bien qu'il ne soit pas fait pour faire des calculs, le terminal de commande permet de réaliser des calculs avec l'imperfection de devoir rester sur des entiers.

::EXEMPLE NOMBRE PREMIERS
SETLOCAL  ENABLEDELAYEDEXPANSION
SET T=%TIME%
SET /P X=2 < NUL
SET /A N=3
:LBL1
SET PREM=VRAI
SET /A DIV=3
IF %N% LSS 10 SET /A LIMITE=%N%/2
IF %N% GEQ 10 SET /A LIMITE=%N%/3
:LBL2
IF %DIV% LSS %LIMITE% (
    SET /A "R=N %% DIV"
    ::ECHO %N% / %DIV% = !R!
    SET /A DIV="DIV + 2"
) ELSE (GOTO SUITE)
IF %R% EQU 0 SET PREM=FAUX
IF %DIV% LSS %LIMITE% GOTO LBL2
:SUITE
IF %PREM%==VRAI SET /P X=%N% < NUL
IF %N% LSS 100 (
    SET /A "N=N+2"
    GOTO LBL1
)
ECHO.
ECHO START %T% END %TIME%
PAUSE
En image

Affichage des variables

Utilisez juste SET pour afficher la liste des variables

Destruction de variables

Utilisez simplement SET Variable= sans rien derrière le signe égal pour la détruire.

Portée des modifications de la commande SET

Les modifications apportées à l'aide de la commande SET ne sont PAS permanentes.

Elles s'appliquent à l'invite CMD actuelle uniquement et ne restent que jusqu'à ce que la fenêtre CMD soit fermée.

Pour remédier à cela, vous pouvez vous référer à la commande SETX qui est une commande externe au Terminal de commande.