Aide en ligne de la commande SET http://fspsa.free.fr/set-aide-en-ligne.txt Ouvrir une Console CMD : Démarrer>Exécuter>cmd Entrer la commande set /? Voir aussi Aide et Support (WIN+F1) Démarrer>Exécuter>hh ntcmds.chm::/ntcmds.htm Démarrer>Exécuter>hh ntcmds.chm::/set.htm Microsoft Technet : Liste alphabétique des commandes de ligne de commande http://technet2.microsoft.com/windowsserver/fr/library/552ed70a-208d-48c4-8da8-2e27b530eac71036.mspx SET http://technet2.microsoft.com/windowsserver/fr/library/0df63b3c-267c-44b7-9361-ae2c4461330f1036.mspx =============================================================================== set /? Affiche, fixe ou supprime des variables d'environnement de cmd.exe. SET [variable=[chaîne]] variable Nom de la variable d'environnement. chaîne Chaîne de caractères à affecter à la variable. SET sans paramètres affiche les variables d'environnement définies. Si les extensions de commandes sont activées, SET est modifié comme suit : La commande SET appelée avec un nom de variable seulement, sans signe égal ou valeur, affiche la valeur de toutes les variables dont le préfixe correspond au nom donné à la commande SET. Par exemple : SET P affiche toutes les variables qui commence avec la lettre 'P' La commande SET fixe la valeur ERRORLEVEL à 1 si le nom de variable n'est pas trouvé dans l'environnement en cours. La commande SET n'autorise pas qu'un signe égal (=) fasse partie du nom d'une variable. Deux nouvelles options ont été ajoutées à la commande SET : SET /A expression SET /P variable=[ChaîneInvite] L'option /A spécifie que la chaîne à droite du signe égal est une expression numérique qui est évaluée. L'évaluation de l'expression est assez simple et prend en charge les opérations suivantes dans l'ordre décroissant de préséance : () - groupement ! ~ - - opérateurs unaires * / % - opérateurs arithmétiques + - - opérateurs arithmétiques << >> - décalage logique & - ET au niveau du bit ^ - OU exclusif au niveau du bit | - OU au niveau du bit = *= /= %= += -= - attribution &= ^= |= <<= >>= , - séparateur d'expression Si vous utilisez des opérateurs logiques ou des nombres, vous devez mettre l'expression entre guillemets. Toute chaîne non numérique dans l'expression est traitée comme une variable d'environnement dont les valeurs sont converties en nombres avant d'être utilisées. Si un nom de variable d'environnement est spécifié mais n'est pas défini dans l'environnement en cours, alors la valeur zéro est utilisée. Cela vous permet de faire des opérations avec les valeurs d'une variable d'environnement sans avoir à entrer des signes % pour obtenir ces valeurs. Si SET /A est exécuté à partir de la ligne de commande en dehors d'un script de commande, alors la valeur finale de l'expression est affichée. L'opérateur d'assignation requiert un nom de variable d'environnement à gauche du cet opérateur. Les valeurs numériques sont des nombres décimaux, à moins qu'ils ne soient préfixés par 0x pour les valeurs hexadécimales et 0 pour la notation octale. Donc 0x12 est identique à 18 et à 022. Notez que la notation octale peut être confuse : 08 et 09 ne sont pas valides car 8 et 9 ne sont pas des nombres valides en notation octale. L'option /P vous permet de fixer la valeur d'une variable avec une ligne entrée par l'utilisateur. Elle affiche la chaîne ChaîneInvite spécifiée avant de lire la ligne entrée. La ChaîneInvite peut être vide. La substitution de la variable d'environnement a été améliorée comme suit : %PATH:ch1=ch2% développe la variable d'environnement PATH, remplaçant chaque occurrence de "ch1" dans le résultat développé par "ch2". "ch2" peut être une chaîne vide pour supprimer toutes les occurrences de "ch1" de la sortie développée. "ch1" peut commencer par un astérisque, auquel cas la commande traitera la chaîne à partir du début et jusqu'à la première occurrence du reste de ch1. Vous pouvez aussi spécifier des sous-chaînes pour une expression. %PATH:~10,5% développe la variable d'environnement PATH et utilise seulement 5 caractères à partir du onzième (décalage de 10) dans le résultat sous forme développée. Si la longueur n'est pas spécifiée, tout le reste de la valeur de la variable est traité. Si l'une des valeurs (décalage ou longueur) est négative, alors le nombre utilisé est la longueur de la valeur de la variable d'environnement ajoutée au décalage ou à la longueur donné. %PATH:~-10% extrait les 10 derniers caractères de la variable PATH. %PATH:~0,-2% extrait tous les caractères sauf les deux derniers de la variable PATH. Extraire la lettre du Volume : (AssignLetter=Z.cmd.txt) set volume=%~d0 echo DRIVE = %volume% set letter=%volume:~0,1% echo LETTER = %letter% Enfin, la prise en charge de l'expansion retardée de variables d'environnement a été ajoutée. Cette prise en charge est toujours désactivée par défaut, mais peut être activée/désactivée via l'option de ligne de commande /V dans CMD.EXE. Voir CMD /? La prise en charge de l'expansion retardée de variables d'environnement est utile pour contourner les limites de l'expansion en cours qui se produit à la lecture d'une ligne de texte et non à son exécution. L'exemple suivant montre le problème causé par l'expansion immédiate de variables : set VAR=avant if "%VAR%" == "avant" ( set VAR=après if "%VAR%" == "après" @echo Cela marche si vous lisez ce message ) n'affichera jamais le message car la variable %VAR% présente dans les deux instances de IF est remplacée à la lecture de la première instance de IF, étant donné que le corps de IF, instruction composée, est logiquement inclus. Donc le IF compris dans l'instance compare "avant" avec "après" et il n'y aura jamais égalité. De même, l'exemple suivant ne fonctionnera pas comme prévu : set LIST= for %i in (*) do set LIST=%LIST% %i echo %LIST% car la liste des fichiers du répertoire ne sera PAS créée, et en fait la variable LIST prendra le valeur du dernier fichier trouvé. Une fois encore cela est dû au fait que %LIST% n'est étendu qu'une fois, lorsque FOR est lu et à ce stade la variable LIST est vide. Donc la boucle FOR exécutée est : for %i in (*) do set LIST= %i qui donne toujours à LIST la valeur du dernier fichier trouvé. L'expansion retardée de variables d'environnement vous permet d'utiliser un autre caractère (le point d'exclamation) afin d'étendre les variables d'environnement durant l'exécution. Si l'expansion retardée de variables est activée, les exemples ci-dessus peuvent être écrits comme suit afin de fonctionner comme vous le souhaitez : set VAR=avant if "%VAR%" == "avant" ( set VAR=après if "!VAR!" == "après" @echo Cela marche si vous lisez ce message ) set LIST= for %i in (*) do set LIST=!LIST! %i echo %LIST% Si les extensions de commandes sont activées, alors plusieurs variables d'environnement dynamiques peuvent être développées sans apparaître dans la liste de variables affichée par SET. Les valeurs de ces variables sont calculées dynamiquement chaque fois que la variable est développée. Si l'utilisateur définit explicitement une variable avec un de ces noms, alors cette définition écrase la définition dynamique décrite ci-dessous : %CD% - se développe en la chaîne du répertoire en cours. %DATE% - se développe en la date actuelle en utilisant le même format que la commande DATE. %TIME% - se développe en l'heure en cours en utilisant le même format que la commande TIME. %RANDOM% - se développe en un nombre aléatoire compris entre 0 et 32767. %ERRORLEVEL% - se développe en la valeur en cours de ERRORLEVEL %CMDEXTVERSION% - se développe en le numéro de version des extensions du processeur de commande en cours. %CMDCMDLINE% - se développe en la ligne de commande originale qui a appelé le processeur de commande.