6
votes

Référence Un volume / lecteur par l'étiquette

J'essaie d'écrire un fichier de commandes sur XCopy un dossier sur un lecteur USB amovible. Cependant, le problème que je suis confronté, c'est que les lettres de conduite sont sujettes à changement. Je voudrais donc pouvoir le faire en faisant référence à l'étiquette de volume au lieu de la lettre de lecteur.

Des idées? Une heure de Google-ing s'est prouvée sans fruit. : (


6 commentaires

Cherche être un duplicatin de Ceci


3 réponses que je n'ai pas comprises, cependant. Plus celui qui a été marqué comme la réponse n'était pas résolu.


Comment était-ce non résolu? La question ci-dessous est en fait répondu dans le poste.


Parce que l'administrateur a posé une question assez fondamentale à ce sujet et n'a jamais été répondu?


Cela ne rend pas la question non résolue. La question a été acceptée et cela fonctionne. À la fin de la réponse, il a donné la commande à utiliser dans un script de lot pour appeler le fichier VBS qu'il affichait. De plus, DBENHAM a la même réponse postée dans les deux endroits. Dbenham et la réponse dans l'autre poste devraient fonctionner pour vous.


Je n'ai jamais eu de succès avec des fichiers par lots et des scripts VBS. De plus, je veux seulement un fichier. DBENHAM obtient des points doubles, de toute façon. Donc, je suis sûr qu'il ne dérange pas.


3 Réponses :


14
votes

Cette commande doit découvrir le lecteur avec l'étiquette correcte et stocker la lettre de lecteur (avec côlon) dans la variable "USB" xxx

Vous pouvez intégrer votre commande xcopy directement dans le Faire la clause si vous voulez. %% D contient la lettre de lecteur.


9 commentaires

Je continue à obtenir "%% d était inattendu à l'heure actuelle" lorsque j'exécute cette commande. Ou si je l'exécute dans un fichier de commandes (comme si cela va être utilisé), et essayez de référencer %% D, par CD %% D par exemple, il est simplement indiqué que "le système ne peut pas trouver le chemin spécifié" :(


@Benhooper - Utilisez% d (seul pour cent) si elle est exécutée à partir d'une ligne de commande. Assurez-vous d'utiliser des citations - «% USB%» ou «%% D» (ou «% D») dans votre déclaration XCopy. Sinon, il échouera s'il y a des espaces sur le chemin.


Vous avez travaillé avec 'pour / f% d dans (' WMIC Volume Get DriveTter ^, étiquette ^ | Rechercher "YourLabel" ')' puis 'XCopy "% SystemDrive% \ SourcePath" "% USB% \ TargetPath"? Merci! :)


'WMIC' n'est pas reconnu comme une commande interne ou externe, programme opérable ou fichier de commandes.


@ Tomášzato - Windows XP Home Edition n'a pas de WMIC. Toutes les autres versions de XP, ainsi que chaque version de Windows depuis, ont le WMIC. Un vote en baisse pour fournir une réponse qui fonctionne sauf pour sur un système d'exploitation abandonné qui n'est plus soutenu par le fabricant est un peu fou.


J'ai Windows 7x64.


@ Tomášzato - alors il y a quelque chose qui ne va pas avec votre installation. WMIC est un utilitaire standard de Win-7. Peut-être que votre variable de chemin est corrompue, mais d'autres commandes standard échoueraient également.


@ Tomášzato - Une autre possibilité est que vous puissiez exécuter un script de lot qui écrase la variable de chemin. Les scripts de lots ne doivent pas écraser les variables d'environnement standard avec leurs propres valeurs.


Pour la casse-insensibilité Rechercher Utiliser / i .



1
votes

Pour mes besoins, j'utilise ce qui suit dans un fichier de commandes qui recherche le "système" intitulé "Système" (ceci est où mon système d'exploitation Windows 7 est installé) et met la lettre de lecteur associée au "système" de l'étiquette dans un variable nommée % systemvolume_drivelletter% xxx


0 commentaires

1
votes

Ceci fonctionne dans Windows XP:

for /f %%D in ('wmic LogicalDisk get Caption^, VolumeName ^| find "DRIVE_LABEL"') do set DRIVE=%%D


0 commentaires