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.

Ananya
la source

Réponses:

160

Spécifiez également /Dpour changer le lecteur.

CD /D %root%
Andriy M
la source
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.

Gabe
la source
29

Essaye ça

chdir /d D:\Work\Root

Profitez de l'enracinement;)

Raie_
la source
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%

NapkinBob
la source
3
Wow, de toutes les solutions, le classement le plus bas est celui qui a vraiment fonctionné comme un charme! Merci!
Arto Kalishian