web-dev-qa-db-fra.com

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 que 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

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.

37
Louis Rhys

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

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

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

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

Pour une liste complète de %~ modificateurs voir call /? ou for /? Aidez-moi.

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

11
David Ruhmann

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, ça n'a pas marché.)

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

7
Ryan