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 :

mountvol récupérer la donnée VolumeName dans une variable


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Points : 17
    Points
    17
    Par défaut mountvol récupérer la donnée VolumeName dans une variable
    Je cherche à écrire un script qui me permettrait de récupérer le GUID d'un volume sans point de montage dans une variable. Manipulation des sorties de la commande mountvol avec une boucle for /f

    Monter un volume sur un dossier NTFS

    mountvol /?
    Creates, deletes, or lists a volume mount point.

    MOUNTVOL [drive:]path VolumeName
    MOUNTVOL [drive:]path /D
    MOUNTVOL [drive:]path /L

    path Specifies the existing NTFS directory where the mount
    point will reside.
    VolumeName Specifies the volume name that is the target of the mount
    point.
    /D Removes the volume mount point from the specified directory.
    /L Lists the mounted volume name for the specified directory.

    Possible values for VolumeName along with current mount points are:

    \\?\Volume{e0de0f47-6038-47bc-bceb-594a462b56e7}\
    C:\

    \\?\Volume{3c439cc2-39c8-11de-8518-806d6172696f}\
    D:\

    \\?\Volume{bbf71292-a819-11da-9fcb-806d6172696f}\
    *** NO MOUNT POINTS ***

    \\?\Volume{8b9b403c-ed79-11df-8524-0011f5b854d7}\
    E:\

    \\?\Volume{8b9b403d-ed79-11df-8524-0011f5b854d7}\
    T:\

    \\?\Volume{8b9b403e-ed79-11df-8524-0011f5b854d7}\
    R:\

    \\?\Volume{8b9b4043-ed79-11df-8524-0011f5b854d7}\
    F:\
    La difficulté réside à analyser la sortie de la commande avec une boucle for /f puisque le séparateur n'est pas un espace ou une virgule mais les 2 infos à traiter sont chacune sur une ligne.

    Lister tous les VolumeName GUID et les lettres assignées
    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
    :__DL
    For /f %%# In ('Mountvol ^|Findstr [c-z]:\\') Do (
    	(Set "DL=%%~#")&&call :__GUID
    	)
    goto :eof
    
    :__GUID
    For /f %%# In ('Mountvol %DL% /L') Do (
    	(Set "GUID=%%~#")&&call :__OUT
    	)
    goto :eof
    
    :__OUT
    echo/%GUID% ^<^=^> %DL%
    goto :eof
    j'aimerais récupérer le VolumeName GUID (en gras dans la sortie de la commande mountvol /?) non monté.

    EDIT: 12 nov 2010 publié mon code actuel

  2. #2
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    tu veux récupérer seulement le nom de volume qui n'a pas de point de montage ?

    EDIT

    essaye ceci :

    untested.cmd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @Echo oFF
    Setlocal EnableDelayedExpansion
    For /f %%1 In (mountvol /l) Do ((Set $1=%%1)
      If !$1! EQU *** Echo:!$2!
      (Set $2=!$1!)
    )
    Endlocal

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Points : 17
    Points
    17
    Par défaut [résolu]
    Salut Walid,

    J'espérais ta réponse car tu as toujours LA solution.

    J'ai juste corrigé l'oubli des ' entourant la commande mountvol et ajouté findstr pour filtrer ce que l'on analyse de la sortie de la commande mountvol.
    Mais le résultat est là !

    correction sur la ligne 3
    @Echo oFF
    Setlocal EnableDelayedExpansion
    For /f %%1 In ('mountvol /l ^|findstr "\ *"') Do ((Set $1=%%1)
    If !$1! EQU *** Echo:!$2!
    (Set $2=!$1!)
    )
    Endlocal
    sortie
    \\?\Volume{bbf71292-a819-11da-9fcb-806d6172696f}\
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/09/2008, 10h21
  2. Réponses: 1
    Dernier message: 04/11/2007, 15h03
  3. Récupérer des données javascript dans des variables php
    Par TigerWolf dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 25/06/2007, 10h03
  4. Récupération de données javascript dans une variable PHP
    Par Taz_8626 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/05/2006, 15h23
  5. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51

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