102 votes

Répertoire de démarrage du fichier par lots Windows lorsque « Exécuter en tant qu'administrateur »

J'ai un fichier batch qui est dans un répertoire et doit être exécuté à partir de là aussi parce qu'il met à jour les fichiers dans ce répertoire.
Cela fonctionne parfaitement bien, sauf lorsque l'utilisateur exécute le fichier batch en tant qu'administrateur (requis sur Vista). Le répertoire de départ est alors C :\Windows\System32.

Existe-t-il un moyen de savoir à partir de quel répertoire le fichier batch a été exécuté ?
Je ne veux pas que l'utilisateur entre manuellement dans le répertoire.

63voto

Benoit Points 35553

Mieux que cd est pushd qui sera

  • changer la lettre de lecteur si vous commencez D:\...
  • attribuer une lettre de lecteur si sur un chemin de réseau UNC

Donc pushd %~dp0 c'est bien.

La bonne pratique consiste alors à appeler popd une fois terminé.

50voto

NMrt Points 468

Cela devrait résoudre votre problème en définissant le répertoire de travail pour le fichier batch de retour au répertoire actuel :

Incluez ces deux lignes en haut de votre script .bat :

@setlocal enableextensions
@cd /d "%~dp0"

Trouvé sur : http://www.codeproject.com/Tips/119828/Running-a-bat-file-as-administrator-Correcting-cur

5voto

Majid Azarniush Points 561

Pour résoudre ce problème, incluez ces deux lignes en haut de votre script .bat :

@setlocal enableextensions
@cd /d "%~dp0"

1voto

@setlocal enableextensions

@cd /d "%~dp0"

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