Re-Salut

Dernier problème, toujours concernant mon batch dont la fonction est d'éditer des raccourcis pour mettre à jour leur répertoire cible.

J'utilise la commande externe shortcut.exe, incluse dans le jeu de fichier de mon batch qui va la chercher tout seul comme un grand, et fait appel à la procédure suivante pour "lire" l'info TargetPath du raccourci en cours de traitement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
for /f "tokens=2 delims==" %%t in ('%_commands%\shortcut\Shortcut.exe /f:"!shortcut!" /a:q') do (
	set target=%%t
	echo !target!>"!#temp!"
	echo Cible   :  !target!>>"!#log!"
	goto :3_Change
)
- La variable "!shortcut!" contient le chemin du raccourci (où il se trouve) afin qu'il soit analysé.
- Le paramètre /a:q détermine l'action "request" qui se charge d'analyser l'objet.
- "tokens=2" permet de choisir la colonne des infos plutôt que la colonne de leur label, puisque ces infos sont stockées sous forme de tableau en deux colonnes. Pas besoin d'utiliser de "skip" puisque la première ligne lisible concerne le TargetPath justement (je me sert donc d'un goto pour sortir précocement de la boucle et ne pas lire les autres lignes).
- J'écris ensuite l'info "cible" dans un fichier temporaire qui me servira plus loin dans le batch, et dans un fichier de log pour garder une trace des opérations.
- Je fais appel à une fonction qui se chargera de modifier la variable contenant cette cible afin d'en modifier la structure, etc.

PROBLÈME :
- Si j'analyse par exemple des raccourcis pointant vers P:\Liberkey\Apps\*.exe alors que mon lecteur est désormais E:\ après formatage de mon Windows...
- ... ce code va certaines fois détecter la cible comme étant P:\Liberkey\Apps\..., et d'autres fois comme étant E:\Liberkey\Apps\... !!
- Je précise qu'à chaque fois je vérifie la chose en faisant un clic-droit>Propriété sur les raccourcis pour m'apercevoir qu'ils poitent tous vers P:\Liberkey\Apps\...
- J'ai remarqué sur si je double-clique sur un de ces liens P:\Liberkey\Apps\..., Windows Seven semble détecter le nouvel emplacement du dossier Liberkey et le raccourci s'édite tout seul.

Je suis donc complètement estomaqué, parce que je viens de passer de nombreuses heures à réaliser ce batch vraiment complexe, à le débuguer ce qui fût long et pénible, tout ça pour m'apercevoir que la commande shortcut.exe semble "bypassée" par W7 qui doit balancer une info qu'il n'affiche même pas dans les propriétés des raccourcis !

Mon batch est inutilisable, puisqu'il détecte les raccourcis comme valides alors qu'ils ne le sont pas ! Il n'édite donc pas les cibles et mes raccourcis sont toujours "cassés". Le problème est mineur puisqu'un simple double-clique résoud l'affaire, mais par défaut les icônes des raccourcis ne sont plus correctes dans l'explorateur, et aussi dans RocketDock. Surtout, je viens de passer des heures pour rien.

J'aimerais donc savoir si on peut résoudre le problème ou pas, puisque je compte utiliser ce batch sous XP qui lui ne dispose pas de la fonction d'auto-détection de W7.