un grand merci à Karzoff pour sa relecture et sa mise en page
Salut,
J'espère que ce petit HowTo aidera quelqu'un... Il faut noter que je n'ai parlé ni des paramètres, ni des variables de la boucle FOR. Ceci dit, je vous souhaite une bonne lecture et surtout de bons tests![]()
==> EDIT: ce post sera mis à jour
- Affectation de variables :
Contrairement à beaucoup d'autres langages de scripts, il n y a pas
beaucoup de restrictions dans le référencement des variables:
- Pas besoin de différencier le type STRING du type NUMBER par des doubles quotes.
- Peu de restrictions dans le nommage des variables
- ..etc.
La taille maximale d'une variable d'environnement est 8 192 octets.
- La commande SET
Pour créer une variable on doit utiliser la commande SET /?
"SET" sans paramètres affiche les variables d'environnement non-dynamiques
La commande "SET" permet d'afficher/modifier/supprimer des variables.- Opérateur d'affectation :
L'opérateur d'affectation est le caractère '=' pour une chaîne de caractères, les autres opérateurs d'affectations (raccourcis) sont utilisés dans le cas de calculs numériques (voir SET /?).
[ += -= %= |= &= *= /= ^= ..etc ]
Pour une chaîne de caractères:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SET VARIABLE=VALEUR ECHO %VARIABLE%
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET VARIABLE=VALEUR SET VARIABLE=2 ECHO %VARIABLE%
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET VAR=VALEUR SET RAV=%VAR% ECHO %RAV%Pour une expression numérique à évaluer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SET VAR=2 SET RAV=VALEUR SET RAVAR=%RAV% %VAR% ECHO %RAVAR%
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @ECHO OFF SET/AA=1,B=400,C=10 :GOTO TRAITEMENT SET {+}=%{+}% %A% SET {/}=%{/}% %B% SET {-}=%{-}% %C% sET/AA+=1,B/=2,C-=1 IF %A% LEQ 10 GOTO:GOTO BOUCLE SET { PAUSE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 {+}= 1 2 3 4 5 6 7 8 9 10 {-}= 10 9 8 7 6 5 4 3 2 1 {/}= 400 200 100 50 25 12 6 3 1 0- Différenciation majuscule/minuscule
Les variables ne sont pas sensibles à la casse (les majuscules et les
minuscules ne sont pas différenciées "A = a")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SET _VAR=TEST 1 ECHO %_VAR% = %_var% = %_VaR%- Espace entre la variable et sa valeur
Si le nom de la variable n'est pas collé au signe "="
l'appel de cette variable n'est plus:
mais plutôt:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ECHO %Nom_De_La_Variable%
voici un exemple concret:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ECHO %Nom_De_La_variable_+_Nombres_D'espaces jusqu'au signe égal%
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SET _VARa=TEST 2 ECHO [%_VARa%] SET _VARb = TEST 2 ECHO [%_VARb%] SET _VARc = TEST 2 ECHO [%_VARc %]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Output [TEST 2] [] [ TEST 2]- Nommage de variables avec espaces
On peut créer des variable dont le nom comporte des espaces.
Le seul problème réside dans le test de définition de la variable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET MA VARIABLE=TEST 3 SET MA VARIABLE ECHO %MA VARIABLE%
Avec ce code IF DEFINED va testez l'existence d'une variable "MA"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 IF DEFINED MA VARIABLE (ECHO %MA VARIABLE%)
si elle est présente la syntaxe deviendra incorrecte puisque VARIABLE
n'a rien à faire ici "l'instruction attend une action"
une des solutions possibles consiste en l'encadrement de l'instruction par des doubles quotes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SET ""MA VARIABLE"=BONJOUR MAITRE" IF DEFINED "MA VARIABLE" (ECHO %"MA VARIABLE"%) ELSE (ECHO NON DEFINIE)
On peut aussi utiliser une autre variable :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET MA VARIABLE=TEST 3 SET MA.VARIABLE=%MA VARIABLE% IF DEFINED MA.VARIABLE (ECHO %MA.VARIABLE%)- Nommage des variables avec des caractères spéciaux
Possibilité d'utiliser dans les noms des variables, des caractères spéciaux au delà de [a-zA-Z,_]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 SETLOCAL ENABLEEXTENSIONS SET -=VALEUR 1 SET #=VALEUR 2 SET @=VALEUR 3 SET $=VALEUR 4 SET /=VALEUR 5 SET \=VALEUR 6 SET ]=VALEUR 7 SET [=VALEUR 8 SET +=VALEUR 9 SET '=VALEUR 10 FOR %%! in (- # @ $ / \ ] [ + ') do SET %%! REM # REM # POUR UTILISER DES NOMBRES PROPREMENT REM # ON DOIT ACTIVER L'(ERV) REM # ENDLOCAL & SETLOCAL ENABLEDELAYEDEXPANSION SET 0=VALEUR SET 1=11 SET 3=!0! !1! SET 3 ECHO !0! !1! ENDLOCAL
- Suppression des variables
On peux supprimer les variables en utilisant cette syntaxe: SET MA.VARIABLE=
exemple:
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SET MA.VARIABLE=HELLO SET MA.VARIABLE SET MA.VARIABLE= SET MA.VARIABLE
deux méthodes nous sont offerts pour supprimer nos variables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MA.VARIABLE=HELLO La variable d'environnement MA.VARIABLE n'est pas d‚finie.
- Ancienne méthode
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SET VAR1=SITE: SET VAR2=Developpez.net SET VAR3=FORUM: SET VAR4=Script Batch/PowerShell ECHO 1- %VAR1% %VAR2% %VAR3% %VAR4% SET VAR1= SET VAR2= SET VAR3= SET VAR4= ECHO 2- %VAR1% %VAR2% %VAR3% %VAR4%
Cette méthode n'est presque plus utiliser sauf pour des cas particuliers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 1- SITE: Developpez.net FORUM: Script Batch/PowerShell 2-
L'inconvénient le plus majeur de cette méthode c'est qu'on est à chaque fois obligé de supprimer manuellement nos variables (parfois des dizaines.!!)
Pour contourner ce problème on pourra utiliser une boucle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FOR %%X IN (VAR1 VAR2 VAR3 ..) DO SET %%X=- Nouvelle méthode
On va utiliser le paire SETLOCAL/ENDLOCAL pour activer un environnement local à notre fichier de commandes
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SETLOCAL SET VAR1=SITE: SET VAR2=Developpez.net SET VAR3=FORUM: SET VAR4=Script Batch/PowerShell ECHO 1- %VAR1% %VAR2% %VAR3% %VAR4% ENDLOCAL ECHO 2- %VAR1% %VAR2% %VAR3% %VAR4%
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 1- SITE: Developpez.net FORUM: Script Batch/PowerShell 2-- Forcer la lecture des variables
Prenons l'exemple d'un fichier "test.txt" contenant :
On veux étendre les variables d'environnement à leurs valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 %SystemRoot% %UserProfile%\Bureau C:\walid2
Si on fait ceci:
La sortie ne sera pas correcte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for /f "delims=" %%a in (test.txt) do echo.%%a
On doit FORCER la lecture des variables par le biais de "CALL" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for /f "delims=" %%a in (test.txt) do call echo %%a for /f "delims=" %%a in (test.txt) do call dir "%%a" for /f "delims=" %%a in (test.txt) do call copy "%%a" .\MyRep- Référencer une variable "textuellement"
- Désactiver l'ERV (par défaut)
ou bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SETLOCAL ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION SET DIRCMD=/B/A-D SET Z=%SystemRoot% SET X=Z CALL DIR %%%X%%%- Activer l'ERV
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION SET DIRCMD=/B/A-D SET Z=%SystemRoot% SET X=Z DIR !%X%!
- Activer/Désactiver l'ERV (cause et conséquence)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SETLOCAL SET +=BONJOUR ! ( SET +=HELLO ! ECHO %+% ) ENDLOCAL SETLOCAL ENABLEDELAYEDEXPANSION SET #=BONJOUR ! ( SET #=HELLO ! ECHO !#! ) ENDLOCAL SETLOCAL DISABLEDELAYEDEXPANSION SET \=BONJOUR ! ( SET \=HELLO ! CALL ECHO %%\%% ) ENDLOCAL- Substitution/Suppression de valeur
Il est possible de substituer/modifier/supprimer/ajouter des chaînes de
caractères dans la valeur de la variable, Il existe 3 "mode opérationnels" :
- Mode 1 (normal)
dans ce mode on procède pas à pas :
voici un autre exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SET _VAR=tidnis SET _VAR SET _VAR=%_VAR:t=T% SET _VAR=%_VAR:i=% % Suppression % SET _VAR=%_VAR:d=u% % Substitution % SET _VAR=%_VAR:s=isie% % Adjonction % SET _VAR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SET _VAR=0x1x2x3x4x5x6x7x8x9x SET _VAL=%_VAR:x= % SET _- Mode 2 (automatisé)
On regroupe tous les remplacements dans une boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SETLOCAL ENABLEDELAYEDEXPANSION SET _VAR=test: (1.x.2.x.3.x.4.x.5.x.6.x.7.x.8.x.9) SET _VAR FOR %%: IN ("(=[",")=]",".= ",":= =>","test=TEST","x=") DO SET "_VAR=!_VAR:%%~:!" SET _VAR ENDLOCAL- Mode 3
Ce mode est une extension peu connue du "MODE NORMAL".
Prenons un exemple qui nous permettra de voir son fonctionnement et son utilité :
Autre exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SET _VAR=VALUE VALEUR SET _VAR=%_VAR:* =% SET _VAR
L'astérisque * match tous les caractères avant le(s) caractère(s) qui le succèdent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET _VAR=abcdefghijklmnopqrstuvwxyz0123456789 SET _VAR SET _VAR=%_VAR:*z=VALEURS NUMERIQUES: % SET _VAR
- Extraction de valeurs
La syntaxe est connue (SET /?), mais voici un petit exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET $VAR=[DATA1]xxxx[DATA2]xxxx[DATA3] SET $VAR SET $VAR={%$VAR:~-6,+5%}....{%$VAR:~12,+5%}....{%$VAR:~1,+5%} SET $VAR- Modification des variables globales dans un environement local
Dans un environnement local, lorsque l'on modifie les variables globales, les nouvelles valeurs ne remplacement pas les anciennes.
Cet exemple montre les modifications "normales" que doivent respecter les variables "_VAR" et "_VAL"
Retournera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SET _VAR=VALEUR 1 SET _VAL=VALEUR 2 SET _ & CALL:IsFunc & SET _ EXIT /B :IsFunc SET _VAR=VALEUR 3 SET _VAL=VALEUR 4 GOTO:EOF
Ici on constate que lorsqu'on déclare nos 2 variables dans un environnement local "dans la sous-fonction" les valeurs dans l'environnement "global" prennent le dessus sur les valeurs dans l'environnement "local".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _VAL=VALEUR 2 _VAR=VALEUR 1 _VAL=VALEUR 4 _VAR=VALEUR 3
Retournera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SET _VAR=VALEUR 1 SET _VAL=VALEUR 2 CALL:IsFunc & SET _ EXIT /B :IsFunc SETLOCAL SET _ SET _VAR=VALEUR 3 SET _VAL=VALEUR 4 ENDLOCAL GOTO:EOF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _VAL=VALEUR 2 _VAR=VALEUR 1 _VAL=VALEUR 2 _VAR=VALEUR 1
Pour contourner ce problème on doit apporter nos modifications en dehors de l'environnement local :
Retournera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SET _VAR=VALEUR 1 SET _VAL=VALEUR 2 CALL:IsFunc & SET _ EXIT /B :IsFunc SETLOCAL SET _ ENDLOCAL&( SET _VAR=VALEUR 3 SET _VAL=VALEUR 4 ) GOTO:EOF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _VAL=VALEUR 2 _VAR=VALEUR 1 _VAL=VALEUR 4 _VAR=VALEUR 3- Portée des variables
- structure linéaire:
dans le cas d'une structure SETLOCAL/ENDLOCAL linéaire, l'utilisation des variables localement n'est correcte que lorsque le traitement sur ces variables est dans ce même environnement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @ECHO OFF SETLOCAL SET $VAR=HELLO IF DEFINED $VAR (ECHO $VAR DEFINIE) ELSE (ECHO $VAR NON DEFINIE) ENDLOCAL SETLOCAL IF DEFINED $VAR (ECHO $VAR DEFINIE) ELSE (ECHO $VAR NON DEFINIE) ENDLOCAL PAUSE- structure imbriquée:
Chaque environnement local crée hérite des variables local de l'environnement parent (l'imbrication est limitée à 32 niveau )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @ECHO OFF SETLOCAL SET A=SALAM SETLOCAL SET B=BONJOUR SETLOCAL SET C=HELLO ECHO ENV.LOCAL 3: %A% %B% %C% ENDLOCAL ECHO ENV.LOCAL 2: %A% %B% %C% ENDLOCAL ECHO ENV.LOCAL 1: %A% %B% %C% ENDLOCAL PAUSE- Variables dynamiques
Je ne vais pas répéter l'aide de la commande SET /?
%CD%, %TIME%, %DATE%, etc. sont toutes
des variables dynamiques qui changent selon le contexte.
Les deux scripts ci dessous, montrent comment utiliser les variables dynamiques %ERRORLEVEL% et %RANDOM%.
But : tester l'existence du fichier mis en paramètre avec les ERRORLEVEL's
Errorlevel.bat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 @ECHO OFF SETLOCAL ENABLEEXTENSIONS IF "%~1"=="" ( Call:ExitCode 1) ELSE IF NOT EXIST "%~1" ( Call:ExitCode 2) ELSE ( Call:ExitCode 0) IF %ERRORLEVEL%==2 (ECHO {%~1} N'EXISTE PAS) IF %ERRORLEVEL%==1 (ECHO PARAMETRE MANQUANT) IF %ERRORLEVEL%==0 (ECHO LE FICHIER {%~1} EST PRESENT..) ENDLOCAL & GOTO:EOF :ExitCode EXIT /B %1 GOTO:EOF
But : créer l'expression d'un intervalle entre 2 nombres pour un nombre aléatoire
Random.bat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 @ECHO OFF & SETLOCAL ENABLEEXTENSIONS & SET/AMAX=%2,MIN=%1 IF NOT DEFINED MAX IF NOT DEFINED MIN (GOTO:HELP) IF %MAX% LSS %MIN% (GOTO:HELP) SET/A_MAX=(MAX-MIN)+1,_EXP=%RANDOM%%%_MAX+MIN ECHO. ECHO MIN=%min% ECHO MAX=%max% ECHO EXP=%%RANDOM%%%%%%%_MAX%+%MIN% ECHO RAN=%_EXP% ENDLOCAL & EXIT /B :HELP ::::::::::::::::::::::::::::::::::::::::::::::::: CLS ECHO. ECHO. ECHO USAGE: RANDOM min max ECHO RANDOM ECHO. ECHO EXEMPLE: RANDOM 142 284 ECHO. ECHO MIN = 142 ^<- Minimum ECHO MAX = 284 ^<- Maximum ECHO EXP = %%RANDOM%%%%%%143+142 ^<- Expression ECHO RAN = 164 ^<- Nombre Aleatoire ECHO. ECHO INFOS: 1- il faut que MIN =^< MAX ECHO 2- Intervale limiter de: 0 … 32767 ECHO. goto:EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::- Variables spéciales
Ces variables provoquent un changement dans le comportement de quelques commandes.
Cas de COPYCMD:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SET COPYCMD=/B COPY FILE1+FILE2+FILE3 FILE4 REM # COPY /B FILE1+FILE2+FILE3 FILE4
Cas de DIRCMD:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SET DIRCMD=/B/A-D/S DIR MyFolder REM # DIR /B/A-D/S- Appel de variables externes
On peux appeler des variables externes dans nos fichiers de commandes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SETLOCAL & SET $T=%TIME% ECHO>TM.BAT SET $T FOR %%: in (CALL DEL) do %%: TM.BAT ::::::::::::::::::::::::::::::::::::::::::::::::::: ::ICI LE TRAITEMENT:EXEMPLE: DIR /B /A-D /S %WINDIR%\*.EXE CLS ::::::::::::::::::::::::::::::::::::::::::::::::::: ECHO DEBUT: %$T% ECHO FIN : %TIME% ENDLOCAL- Les caractères réservés
Prenons cette exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SET _VAR=^^ ^& %% ^| ^< ^> REM SET _VAR retourne le bon résultat SET _VAR REM ECHO %_VAR% retourne une erreur ECHO %_VAR%On constate que les doubles-quotes ont leur importance dans l'interprétation des caractères réservés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SET "_VAR=^^ ^& %% ^| ^< ^>" REM SET _VAR retourne un résultat erroné SET _VAR REM ECHO %_VAR% retourne le bon résultat ECHO %_VAR%
- Création de Pseudo-Arrays
L'appel de ces variables ce fait par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SETLOCAL ENABLEDELAYEDEXPANSION SET/AX=0 & FOR %%X IN (STR1 STR2 STR3 STR4) DO ( SET ARRAY[!X!]=%%X SET/AX+=1 ) SET ARRAY[ ENDLOCAL
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET ARRAY[0] SET ARRAY[1]...SET ARRAY[n]- Héritage de l'instance de Cmd.exe avec son application Cmd.exe parente
En imbriquant des instances de Cmd.exe, vous pouvez apporter des modifications à l'environnement local sans affecter l'application parente de Cmd.exe.
Pour appeler une nouvelle instance de cmd.exe tapez cmd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 c:\RepTest-> SET VAR=BONJOUR MAITRE c:\RepTest-> ECHO %VAR% BONJOUR MAITRE c:\RepTest-> CMD Microsoft Windows XP [version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. c:\RepTest-> ECHO %VAR% BONJOUR MAITRE c:\RepTest-> SET VAR=ADIEU MAITRE c:\RepTest-> ECHO %VAR% ADIEU MAITRE c:\RepTest-> EXIT c:\RepTest-> ECHO %VAR% BONJOUR MAITRE- Variable d'env. utilisateur/système
- Quelques variables d'env. utilisateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 %ALLUSRERPROFILE% %APPDATA% %CD% %CMDCMDLINE% %LOGONSERVER% %PROMPT% %USERDOMAIN% %USERNAME% %USERPROFILE%- Quelques variables d'env. système :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 %CMDEXTVERSION% %COMPUTERNAME% %COMSPEC% %DATE% %ERRORLEVEL% %HOMDRIVE% %HOMEPATH% %HOMESHARE% %NUMBER_OF_PROCESSORS% %OS% %PATH% %PATHEXT% %PROCESSOR_ARCHITECTURE% %PROCESSOR_IDENTIFIER% %PROCESSOR_LEVEL% %PROCESSOR_REVISION% %RANDOM% %SYSTEMDRIVE% %SYSTEMROOT% %TEMP% %TIME% %WINDIR%- Créer des variables dynamiquement:
En activant l'ERV on peux exploiter les variables dynamiquement.
- Expansion au contenu de la variable
va Afficher la valeur de la variable "VAR"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SETLOCAL ENABLEDELAYEDEXPANSION SET VAR=VAL ECHO !VAR%VAL%! ENDLOCAL- Expansion au contenu de la variable
Expansion au contenu d'autres variables
va Afficher les valeurs des variable "VARVAL" et "VALVAR"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SETLOCAL ENABLEDELAYEDEXPANSION SET VARVAL=VARVAL SET VALVAR=VALVAR SET VAR=VAL ECHO !VAR%VAR%! SET VAR=VAL ECHO !%VAR%VAR! ENDLOCAL
les 2 variables "VAR" de cet exemple on été dynamiquement
étendu en respectivement "VARVAL" et "VALVAR"
autre exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SETLOCAL ENABLEDELAYEDEXPANSION SET VALEUR=5 SET VAR5=VALEUR 5 SET VAR=VALEUR ECHO !VAR%VALEUR%! ENDLOCAL
@ suivre..
Partager