Comment changer le répertoire de travail actuel à l'aide d'un fichier batch


110

J'ai besoin d'aide pour écrire un fichier batch. J'ai un chemin stocké dans une racine variable comme suit:

set root=D:\Work\Root

Ensuite, je change mon répertoire de travail vers cette racine comme suit:

cd %root%

Lorsque j'exécute ce fichier de commandes à partir de n'importe où sur le lecteur D, cela se fait avec succès. Mais lorsque j'exécute le même fichier de commandes à partir d'un autre lecteur, cd% root% ne fonctionne pas.

Existe-t-il un moyen d'obtenir la lettre de lecteur à partir de la variable racine? Je peux ensuite changer le répertoire actuel sur ce lecteur en premier, puis cd% root% fonctionnera.

Réponses:


160

Spécifiez également /Dpour changer le lecteur.

CD /D %root%

1
D'autres réponses disent \d(minuscules) y a-t-il une différence entre les deux? L'option est-elle simplement insensible à la casse?
josch

3
@josch: Oui, si nous parlons des commandes internes de CMD, alors les paramètres de commutation comme /Dci-dessus sont insensibles à la casse ( /D= /d), tout comme les commandes elles-mêmes ( CD= cd). Je pense que cela est également vrai pour tous les utilitaires de ligne de commande Windows externes (comme FINDSTR, SORTetc.). Les outils tiers, en revanche, peuvent utiliser des paramètres sensibles à la casse.
Andriy M

ne vaut pas une réponse propre, mais vous pouvez set "root=/d D:\Work\Root"et cd %root%ou même set "root=cd /d D:\Work\Root"et juste%root%
Stephan

40

Utilisez simplement cd /d %root%pour changer de lettre de pilote et de répertoire.

Vous pouvez également utiliser pushd %root%pour changer les lettres de lecteur lors du changement de répertoires et pour stocker le répertoire précédent sur une pile afin que vous puissiez l'utiliser popdpour revenir en arrière.

Notez que pushdcela vous permettra également de changer de répertoire en partage réseau. Il mappera en fait un lecteur réseau pour vous, puis le démappera lorsque vous exécuterez le popdpour ce répertoire.


29

Essaye ça

chdir /d D:\Work\Root

Profitez de l'enracinement;)


6
Enracinement? Qu'est-ce que cela signifie même dans ce contexte?
Mathias Lykkegaard Lorenzen

Il convient de noter que le répertoire avant et après, "devrait être mis comme ceci; chdir / d" D: \ Work \ Root "
Ad Infinitum

12

Une syntaxe plus simple pourrait être

pushd% racine%


3
Wow, de toutes les solutions, le classement le plus bas est celui qui a vraiment fonctionné comme un charme! Merci!
Arto Kalishian
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.