déc 19 2011
[Post-it] Windows XP, fichier batch et glisser-déposer
Travaillant sous Windows Seven, j’ai réalisé un petit fichier batch qui nécessitait la gestion du glissé/déposé d’un fichier sur celui-ci. Pour récupérer le chemin d’accès au fichier qui a été glissé, rien de bien compliqué étant donné qu’on a sa valeur dans %1 :
@echo off echo %1 java -jar app.jar %1 pause
Pour l’exemple, je passe à une application « app.jar » le chemin d’accès au fichier en paramètre. Notez que « app.jar » est dans le même dossier que le script batch.
Le problème arrive quand on passe sur Windows XP et les chemins d’accès Quand on exécute directement le batch avec un bête double-clic, aucun problème, tout fonctionne correctement. En revanche quand on tente de faire un glissé/déposé, un petit message d’erreur disant que le fichier « app.jar » est introuvable. Il s’avère que lors d’un glissé/déposé, XP utilise le dossier de l’utilisateur (C:\Documents and Settings\User…) comme dossier courant au lieu du dossier dans lequel est le fichier batch comme attendu, ce que nous confirme le fichier batch suivant :
@echo off echo %CD% pause
Pour contourner le problème, c’est très simple en fait. D’après la documentation, cmd.exe fournit des variables de paramètres allant de %0 à %9 et la variable %0 contient le chemin d’accès au fichier batch. On va s’en servir pour changer de dossier dès le début :
@echo off cd %0\.. java -jar app.jar %1 pause
Et voilà, que ce soit en lancement normal ou suite à un glisser/déposer, on a le même comportement que ce soit sous Seven ou XP.
