51 votes

Changer le répertoire actuel vers le répertoire du fichier de lot

J'ai un fichier bat sous Windows qui exécute une opération procdump. Le problème avec le fichier batch est que je dois d'abord me rendre dans le répertoire du fichier batch avant d'exécuter la tâche, sinon le script ne fonctionnera pas.

Comment changer vers le répertoire actuel du fichier batch ?

J'ai essayé le code suivant dans mon fichier procdump.bat :

cd "%~dp"
procdump -h devenv.exe mydump.txt

Mais cela a échoué, le message d'erreur est le suivant :

L'utilisation suivante de l'opérateur de chemin dans la substitution de paramètres batch est invalide : %~dp"

Pour des formats valides, tapez CALL /? ou FOR /?

Édition : La réponse fournie fonctionne, mais il y a juste un problème : si mon répertoire actuel est différent du répertoire du fichier batch, alors j'obtiendrais un message d'erreur "Le système ne peut pas trouver le chemin spécifié". Quelqu'un a des idées ?

79voto

Net Citizen Points 1053

D'accord, je pense avoir trouvé ici ce que vous voulez dire avec %~dp.

Je pense que ce que vous voulez vraiment faire est le suivant:

cd /D "%~dp0"

(!) Mais notez que cela ne vous donnera toujours pas le bon comportement lorsque vous essayez d'exécuter votre lot alors que le répertoire actuel est sur un autre lecteur car cd ne change pas le lecteur actif.

Éditer: Apparemment (merci @Yoopergeek), vous pouvez ajouter le paramètre /D à la commande cd pour qu'elle change également le lecteur actif.

12voto

Shevek Points 247

Je laisserais un commentaire à la réponse de fretje, mais apparemment je ne peux pas ??


Quoi qu'il en soit, concernant la note:
Mais notez que cela ne vous donnera toujours pas le bon comportement lorsque vous essayez d'exécuter votre lot alors que le répertoire actuel est sur un autre lecteur car cd ne change pas le lecteur actif.


Utilisez l'interrupteur /D dans votre commande CD, et CD changera le lecteur actif.

10voto

idbrii Points 153

Vous pouvez utiliser pushd "%~dp0" pour accéder au répertoire d'un fichier batch - même s'il se trouve sur un autre lecteur. De plus, cela vous permet d'utiliser popd pour revenir à votre emplacement précédent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X