Comment connaître le chemin de localisation d’un script .BAT?

Aujourd’hui, on retrouve ses chatons. Vous avez déjà voulu savoir le chemin qui mène à un script .BAT, au moment de l’exécution dudit script? La réponse tient en peut de caractère, mais n’est pas évidente!

Alors, oui, je l’admets, le batch cmd, ça commence à être daté, voire obsolète, mais il y a encore plein de cas au quotidien où son utilisation est bien pratique lorsqu’on développe sous Windows.


Imaginons le script suivant:

set curdir = %CD%
echo %curdir%
set fichier = %curdir%\fichier_log.txt
...

Je sais qu’en script windows, je peux utiliser la variable d’environnement %CD% qui me donne le répertoire courant. Si je double clique sur le script, cela revient à me placer dans son répertoire, puis à l’exécuter. J’obtiens donc le résultat suivant:

z:\chemin\vers\le\script\

Imaginons maintenant que je ne lance pas le script depuis le même répertoire, par exemple f:\autre\repertoire\.

> f:
> cd f:\autre\repertoire\
> call z:\chemin\vers\le\script\script.bat
f:\autre\repertoire\

Et ce n’est pas ce que je veux! Dans mon cas, je lance le script depuis eclipse, et le répertoire de départ n’est pas du tout celui du script.

Mais tout rentre dans l’ordre si l’on utilise la variable « magique » %~dp0. Mon script devient donc:

set curdir = %~dp0
echo %curdir%
set fichier = %curdir%\fichier_log.txt
...

En fait, cela s’appelle une extension de paramètre. Dans le contexte d’exécution, %0 représente le chemin complet vers le fichier exécuté, autrement dit le premier paramètre (numéroté 0) de la ligne de commande. Le fait de rajouter ~dp avant le numéro demande à l’interpréteur de susbtituer le chemin par un chemin contenant le disque (d) et le chemin absolu (p).

Pour plus d’informations, cette page de ss64.com donne pas mal de possibilités.

Source: http://stackoverflow.com/a/130136/312589

Vous aimerez aussi...

Laisser un commentaire