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 /?
Citation:
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:
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