Référencer un Disque par son Label dans les Fichiers Batch Windows
Dans un environnement informatique dynamique, les lettres de disque peuvent changer en fonction de divers facteurs tels que les connexions de périphériques et les configurations système. Cette variabilité peut entraîner des complications, notamment lors de la création de scripts dépendant de disques spécifiques. Vous êtes-vous déjà retrouvé dans une situation où vous deviez référencer un disque dont la lettre pouvait changer ? Par exemple, vous pourriez essayer d’accéder à un disque pour sauvegarde ou stockage par son label, tel que “MonLabel”. Si cela vous est déjà arrivé, lisez la suite pour découvrir une solution simple qui vous permet de le faire.
Le Problème avec les Lettres de Disque
Lors de l’écriture de fichiers batch ou de scripts dans Windows, de nombreux développeurs utilisent la lettre de disque pour effectuer des opérations. Cependant, cette approche présente quelques inconvénients :
- Incohérence : La lettre de disque peut changer facilement selon la séquence des périphériques connectés.
- Erreurs : Les scripts peuvent échouer s’ils ne peuvent pas trouver le disque qu’ils recherchent en raison des changements de lettres.
Pour rendre les scripts plus robustes, il est souvent préférable de faire référence à un disque par son label. Cela garantit que même si la lettre de disque change, le label reste constant.
La Solution : Utiliser un VBScript
Vous pouvez créer un VBScript qui récupère la lettre de disque basée sur un label spécifié. Suivez les étapes ci-dessous pour mettre en œuvre cette solution.
Étape 1 : Créer le VBScript
-
Ouvrez un éditeur de texte (comme le Bloc-notes).
-
Copiez et collez le code suivant :
Option Explicit Dim num, args, objWMIService, objItem, colItems set args = WScript.Arguments num = args.Count if num <> 1 then WScript.Echo "Usage: CScript DriveFromLabel.vbs <label>" WScript.Quit 1 end if Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk") For Each objItem in colItems If strcomp(objItem.VolumeName, args.Item(0), 1) = 0 Then Wscript.Echo objItem.Name End If Next WScript.Quit 0
-
Enregistrez le fichier sous le nom
DriveFromLabel.vbs
.
Étape 2 : Exécuter le Script
Maintenant que vous avez créé le script, vous voudrez l’exécuter en utilisant la commande suivante :
cscript /nologo DriveFromLabel.vbs <label>
- Remplacez
<label>
par le label réel du disque que vous souhaitez référencer. Par exemple, si votre label de disque est “MonLabel”, vous exécuteriez :
cscript /nologo DriveFromLabel.vbs MonLabel
Comprendre le Script
Voici un aperçu simple des principaux composants du script :
- Service WMI : Le service Windows Management Instrumentation (WMI) est utilisé pour obtenir des informations sur les disques.
- Gestion des Arguments : Le script vérifie si l’utilisateur a fourni un argument (le label du disque) et l’avertit si ce n’est pas le cas.
- Énumération des Disques : Le script parcourt tous les disques disponibles et vérifie si le label de volume correspond à l’entrée.
- Sortie : Si une correspondance est trouvée, il affiche la lettre de disque correspondante.
Conclusion
Référencer des disques par leurs labels au lieu de lettres de disque dans des fichiers batch peut considérablement améliorer la fiabilité de vos scripts. En suivant les étapes décrites ci-dessus, vous pouvez rapidement mettre en place un contournement simple pour toujours savoir quel disque vous utilisez, quelle que soit toute modification des lettres de disque. Cette solution non seulement simplifie votre charge de travail mais réduit également le risque d’erreurs dans vos opérations de fichiers.
La prochaine fois que vous serez confronté au problème des lettres de disque changeantes, rappelez-vous de cette solution pratique en VBScript !