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.
Vous pouvez utiliser les commandes pushd/popd (aide avec pushd /?
)
Prog1.exe
Pushd D:\SomeDir
Prog2.exe
popd
Prog3.exe
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.
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.