i

Découpage d'une variable


Il existe une commande DOS pour extraire une chaîne de caractères. On peut le voir en obtenant l'aide de la commande SET dans une invite de commande (tapez set /?). Extrait de l'aide :


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.




Donc soit "machaine" la variable contenant "1:4162" :


set machaine=1:4162



pour obtenir 4162 dans la variable "resultat", il suffit d'écrire :


set /A resultat=%machaine:~2%




L'interêt de découper une variable est d'extraire certaines parties afin de les retraitées.


p Principe:


Prenons la variable d'environnement %ProgramFiles%


echo %ProgramFiles% donne C:\Program Files


    p Désormais nous souhaitons conserver uniquement le lecteur "c:\"


        echo %ProgramFiles:~0,3%


    On observe que l'ajout du ":~" qui indique le découpage, les valeurs suivantes "0,3" indiquent comment la découper. En effet le 0 indique que le début de la sélection est le 0eme caractère, le 3 indique qu'elle s'arrête au 3eme.


    Autre solution possible, par suppression de caractères:


        echo %ProgramFiles:~,-13%


    p Conservons désormais le nom du dossier "Program Files" uniquement


        echo %ProgramFiles:~3,13%


        echo %ProgramFiles:~3%


    


p Exemple:


rem désactive l'affichage des commandes

@echo off

rem remise à blanc de l'écran

cls

echo variable de base date: %date%

rem découpage %date:~0,2%

rem 1er chiffre numéro du caractère de début de la sélection

rem 2eme chiffre nombre de caractères après le début

echo Nous sommes le %date:~0,2% le %date:~3,2%eme mois de l'ann‚e %date:~6,4%

rem arrêt

pause