J'ai passé la journée à plancher sur ce problème et, n'ayant toujours rien de probant, je me retourne vers vous.
Je vous expose mon problème :
J'ai un fichier cmd qui contient la ligne suivante : cd /d %~dp0
Censé (vous dîtes si je me trompe) initialiser le répertoire courant avec le répertoire parent du fichier cmd lancé, ceci afin de lancer d'autres commandes plus loin dans le script du genre .\outils\reg.exe .......
Mon problème vient du fait que ce répertoire parent en question, sur lequel tente de pointer %~dp0, contient un caractère ^(obligatoire), que dos reconnait comme un caractère spécial et non comme un caractère normal.
Du coup, la commande %~dp0, au lieu de pointer vers E:\test\applitest^1.0\ pointe vers E:\test\applitest1.0\ qui n'existe pas.
J'ai réfléchi à une solution de contournement que je vous explique ici :
- récupérer tout le chemin sauf le dernier élément (celui avec ^) pour le rajouter autrement.
Je peux rajouter autrement l'élément perturbateur mais n'arrive pas à récuperer le chemin du répertoire parent.
D'ailleurs vis à vis du script, c'est le répertoire parent du répertoire parent.
On m'a conseillé une commande du genre : for /f "tokens=1 delims=\" %%a in ('echo %~dp0') do @echo %%a mais je m'y embourbe en la retournant dans tous les sens, en vain.
Ainsi donc, si quelques bonne âmes pouvaient m'éclairer, améliorer mon idée ou m'en trouver de meilleures, je suis preneur.