51 votes

Comment définir le répertoire de travail d'une commande dans un fichier batch Windows ?

Disons que j'ai ces commandes :

 Prog1.exe
D:\SomeDir\Prog2.exe
Prog3.exe

Maintenant, disons pour la deuxième ligne, je voudrais que le répertoire de travail soit D:\SomeDir, mais dans Prog1.exe et Prog3.exe, je veux le répertoire de travail par défaut (normalement, où se trouve mon fichier .bat). Si j'essaye ça

 Prog1.exe
cd D:\SomeDir
D:\SomeDir\Prog2.exe
Prog3.exe

Apparemment, Prog3 sera exécuté dans SomeDir, ce qui n'est pas ce que je veux.

78voto

jeb Points 26035

Vous pouvez utiliser les commandes pushd/popd (aide avec pushd /? )

 Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe

13voto

David Ruhmann Points 5813

Vous pouvez utiliser la commande cd (aide avec cd /? ) avec la %~dp0 , chemin du fichier batch.

 Prog1.exe
cd D:\SomeDir
Prog2.exe
cd %~dp0
Prog3.exe

Pour une liste complète de %~ modificateurs voir call /? ou for /? de l' aide.

Cependant, je n'ajoute ceci que pour fournir une réponse plus complète sur Stack Overflow. Je recommanderais d'utiliser la solution de jeb ci-dessus.

13voto

Ryan Points 2038

Ce qui a fonctionné pour moi, c'est d'ajouter un /d :

 cd /d C:\nginx
ECHO Stopping nginx...
start nginx -s quit

(Quand je n'avais pas le /d , cela ne fonctionnait pas.)

https://stackoverflow.com/a/18310141/470749 essaie de l'expliquer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X