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

  1. 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.

    1. 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.
    2. 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 ]
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
       
           SET VARIABLE=VALEUR
           ECHO %VARIABLE%
      Pour une chaîne de caractères:


      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%
      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%
      Pour une expression numérique à évaluer:
      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
      Résultat:
      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
      
    3. 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%
    4. 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:

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
       ECHO %Nom_De_La_Variable%
      mais plutôt:

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
           ECHO %Nom_De_La_variable_+_Nombres_D'espaces jusqu'au signe égal%
      voici un exemple concret:


      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]
      
    5. Nommage de variables avec espaces

      On peut créer des variable dont le nom comporte des espaces.

      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%
      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
           IF DEFINED MA VARIABLE (ECHO %MA VARIABLE%)
      Avec ce code IF DEFINED va testez l'existence d'une variable "MA"
      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%)
    6. 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


  2. Suppression des variables
    On peux supprimer les variables en utilisant cette syntaxe: SET MA.VARIABLE=

    exemple:

    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
    Résultat:
    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.
    deux méthodes nous sont offerts pour supprimer nos variables.

    1. Ancienne méthode
      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%
      Résultat:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      
      1- SITE: Developpez.net   FORUM: Script Batch/PowerShell 
      2-   
      
      Cette méthode n'est presque plus utiliser sauf pour des cas particuliers.
      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=
    2. Nouvelle méthode

      On va utiliser le paire SETLOCAL/ENDLOCAL pour activer un environnement local à notre fichier de commandes

      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%
      Résultat:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      
      1- SITE: Developpez.net FORUM: Script Batch/PowerShell 
      2-   
      

  3. Forcer la lecture des variables

    Prenons l'exemple d'un fichier "test.txt" contenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     %SystemRoot%
      %UserProfile%\Bureau
      C:\walid2
    On veux étendre les variables d'environnement à leurs valeurs.
    Si on fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      for /f "delims=" %%a in (test.txt) do echo.%%a
    La sortie ne sera pas correcte.
    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

  4. Référencer une variable "textuellement"



    1. Désactiver l'ERV (par défaut)

      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%%%
      ou bien:
    2. 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%!



  5. 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

  6. 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" :

    1. Mode 1 (normal)



      dans ce mode on procède pas à pas :


      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
      voici un autre exemple:

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      SET _VAR=0x1x2x3x4x5x6x7x8x9x
          SET _VAL=%_VAR:x= %
          SET _
    2. 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
    3. 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é :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
        SET _VAR=VALUE VALEUR
         SET _VAR=%_VAR:* =%
         SET _VAR
      Autre exemple :

      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
      L'astérisque * match tous les caractères avant le(s) caractère(s) qui le succèdent.


  7. 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
  8. 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"

    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
    Retournera :
    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
    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
    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
    Retournera :
    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 :
    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
    Retournera :
    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
  9. Portée des variables

    1. 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
    2. 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

  10. 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
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::
  11. 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 
  12. 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
  13. 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%
    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%
    On constate que les doubles-quotes ont leur importance dans l'interprétation des caractères réservés.

  14. Création de Pseudo-Arrays

    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
    L'appel de ces variables ce fait par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET ARRAY[0] SET ARRAY[1]...SET ARRAY[n]
  15. 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
  16. Variable d'env. utilisateur/système
    1. 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%
    2. 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%
  17. Créer des variables dynamiquement:

    En activant l'ERV on peux exploiter les variables dynamiquement.

    1. Expansion au contenu de la variable

      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
      va Afficher la valeur de la variable "VAR"
    2. Expansion au contenu de la variable
      Expansion au contenu d'autres variables

      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
      va Afficher les valeurs des variable "VARVAL" et "VALVAR"
      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..