déc 19

[Post-it] Windows XP, fichier batch et glisser-déposer

Catégorie(s): Développement,DiversSébastien @ 20:54

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.

Articles sur le même sujet :

  1. [Post-it] Convertir un WSDL (RPC-Encoding) en fichier Java
  2. [Post-it] Supprimer les fichiers de plus de X jours sous *nix

Laisser un commentaire