IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Décomposition de path


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 56
    Par défaut Décomposition de path
    Bonjour à tous,

    Je cherche à créer un batch qui permette de décomposer une variable composée de différents chemins vers des répertoires, l'idée étant de vérifier l'existence de ces répertoires.

    A l'heure actuelle, la façon dont il ne fonctionne (pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set FICHIERTEMP=C:\test
    echo %LA_VARIABLE_A_TESTER%>%FICHIERTEMP%
    for /f "tokens=1,* delims=;" %%A in (%FICHIERTEMP%) do (
    IF EXIST %%A ( 
    echo %%A existe
    ) ELSE (
    echo %%A n'existe pas
    )
    )
    Bien évidemment ce code ne fonctionne pas entièrement puisqu'il s'arrête au premier path. Comment automatiser cela sans donner une liste de variable à tester ?

    Plus généralement, comment feriez-vous ça proprement ?

    Merci d'avance

  2. #2
    Membre confirmé Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Par défaut
    Tu peux décomposer les chemins avec :

    %~a : développe %a en supprimant les guillemets.
    %~fa : développe %a en un nom de chemin complet.
    %~da : développe %a en une lettre de lecteur seulement.
    %~pa : développe %a en un chemin seulement.
    %~na : développe %a en un nom de fichier seulement.
    %~xa : développe %a en une extension de fichier seulement.
    %~sa : développe le chemin afin qu'il ne contienne que des noms courts.
    %~aa : développe %a jusqu'aux attributs du fichier.
    %~ta : développe %a jusqu'à la date et l'heure du fichier.
    %~za : développe %a jusqu'à la taille du fichier.
    %~$PATH:a : recherche les répertoires énumérés dans la variable d'environnement et développe %a jusqu'au nom complet du premier répertoire trouvé.
    %~dpa : développe %a en une lettre de lecteur et un chemin seulement.
    %~nxa : développe %a en nom de fichier et une extension seulement.
    %~fsa : développe %a en un nom de chemin complet avec des noms courts seulement.
    %~dp$PATH:a : recherche les répertoires énumérés dans la variable d'environnement pour %a et développe jusqu'à la lettre du lecteur et au chemin du premier répertoire trouvé.
    %~ftzaa : développe %a en une ligne de sortie semblable à celle affichée par la commande "Dir".

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 56
    Par défaut
    [Edit] Désolé je dois vraiment apprendre à lire je vais tester cette méthode, merci [/Edit]

  4. #4
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 56
    Par défaut
    Finalement je veux bien un peu plus d'aide parce que le résultat produit n'est pas probant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "usebackq delims=;" %%i in ('%MA_VAR%') do set TESTVAR=%%~dp$MA_VARIABLE
    Ne renvoi rien ou une erreur, illustration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set MA_VAR=C:\tititi;C:\nonexistingfolder;C:\WINDOWS;C:\Program Files
    C:\Documents and Settings\max>for /F "usebackq delims=;" %i in ('C:\tititi C:\nonexistingfolder C:\WINDOWS C:\Program Files') do set TESTVAR=%~dp$MA_VAR:i
    
    C:\Documents and Settings\max>set TESTVAR=
    ?E?.system cannot find the file ??
    Des idées suggestions ? J'ai essayé de modifier la boucle for en essayant de projeter la variable dans un fichier, essayé aussi de tester la variable entre double quotes, rien n'y fait. J'ai privilégié cette forme car on voit bien que la décomposition du Path fonctionne, mais à ma connaissance je dispose bien d'un répertoire Windows.

    Le message d'erreur indiquant "file not found" signifierait-il que la substitution cherche un fichier et non un répertoire ? Je ne sais jamais très bien si sous batch la distinction est très claire :s

    Bref ces boucles for me font un peu nager, un peu d'assistance serait bienvenue

Discussions similaires

  1. Ajouter des chemins dans la variable PATH
    Par Righetto Dominique dans le forum Linux
    Réponses: 7
    Dernier message: 21/03/2004, 17h38
  2. récupérer le path system
    Par Eugénie dans le forum MFC
    Réponses: 4
    Dernier message: 22/12/2003, 13h03
  3. Décomposition RGB
    Par Claythest dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2003, 11h35
  4. Réponses: 3
    Dernier message: 10/06/2003, 14h16
  5. Redhat-9 changer le path des databases
    Par jean christophe dans le forum Installation
    Réponses: 7
    Dernier message: 30/05/2003, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo