web-dev-qa-db-fra.com

appeler le fichier batch et exécuter en utilisant son propre chemin / répertoire

J'ai un fichier de commandes qui appelle d'autres fichiers de commandes comme celui-ci:

e:\foo\master.bat a le contenu:

call e:\bar\run1.bat 

et e:\bar\run1.bat a le contenu

app1.exe

le problème est que lorsque j'exécute le master.batapp1.exe ne sera pas exécuté, car il s'attendra à ce qu'il soit dans le e:\foo répertoire au lieu d'être dans e:\bar répertoire

11
Omu

Vous ne savez pas où se trouve app1.exe.

S'il partage le dossier avec run1.bat, changez run1.bat

soit

@Echo off
Pushd "%~dp0"
app1.exe
popd

ou

@Echo off
"%~dp0app1.exe"

%0 fait référence au lot en cours d'exécution et au modificateur ~dp retourne le lecteur et le chemin (avec une barre oblique inverse.)

12
LotPings

La réponse à votre question peut être tirée d'une question similaire sur Stack Overflow.

Quel est le répertoire courant dans un fichier batch?

En utilisant les variables mentionnées ici, vous pouvez mettre à jour run1.bat pour appeler app1.exe avec la ligne suivante: %~dp0app1.exe. (La variable% ~ dp0 comprend une barre oblique de fin.) Cela indiquera au fichier de commandes d'exécuter l'exécutable à partir de l'emplacement du fichier de commandes actuel.

4
SturdyErde