le code ci-dessous permet au batch de retrouver son propre chemin.
Il fonctionne tres bien mais je ne suis pas tres satisfait de la methode. Mais peut etre qu'il n'y en a pas d'autre ?
Je voudrais votre avis sur la methode notamment concernant la boucle qui extrait le chemin. Une fois que la
methode sera validée je poserais ce bout de code dans la vitrine batch.
Avant de donner votre avis n'oubliez pas que ce code doit retrouver un chemin qui peut avoir un nombre de repertoir
variable et que l'on ne connait pas le nom du batch !
Code : Tout sélectionner
@ echo Off
rem on recupere la ligne de commande originale passée à CMD.EXE en ne gardant que le chemin et le nom du batch lui meme
for /f "tokens=3* delims= " %%i in ("%CMDCMDLINE%") do set currentdir=%%~i
rem on vire la double quote residuelle
set currentdir=%currentdir:~1%
rem cette boucle supprime un caractere a droite a chaque passage pour supprimer le nom du batch et ne garder que le chemin
:boucle
Rem supprime un caractere a droite
set currentdir=%currentdir:~0,-1%
rem on test le chemin. Si le chemin n'est pas bon la commande suivante ne fonctionnera pas
cd %currentdir%
rem si la commande precedente a fonctionnée alors la lcommande suivante devrait renvoyer le meme chemin
set testcurrentdir=%CD%\
rem on verifi que les chemins sont identiques
if %currentdir%==%testcurrentdir% goto suite
rem si ce n'est pas le cas on boucle
goto boucle
:suite
echo %currentdir%
pause
echo %CMDCMDLINE% renvoi :
cmd /c ""C:\Monchemin\MonBatch.bat" "
la ligne :
for /f "tokens=3* delims= " %%i in ("%CMDCMDLINE%") do set currentdir=%%~i
renvoi :
"C:\Monchemin\MonBatch.bat
donc finalement avec la premiere partie du code on obtient le chemin + le nom du batch:
C:\Monchemin\MonBatch.bat
J'ai eu besoin de ce code car le batch ce trouve dans un repertoire qui peut etre deplacé.
Ce repertoire contient 2 autres fichiers qui seront appelés par ce batch. Je donne aussi a
l'utilisateur la possiblité de renomer ce batch. L'avantage est qu'il n'y a pas de chemin ecrit en dur
dans le code et donc qu'il n'y a pas besoin de le modifier si sont repertoire a ete deplacé
A+