Se connecter avec
S'enregistrer | Connectez-vous

nom de fichier composé

Dernière réponse : dans Programmation

Bonjour à tous,

question toute bête mais que je n'arrive pas à résoudre:

dans mon application Java, je lance l'invite de commande pour qu'elle m'ouvre un fichier excel de cette façon:

Runtime.getRuntime().exec("cmd.exe /c start C:\\Docume~1\\Administrateur\\workspace\\Eclipse\\Test1\\Rappor~1\\Rapport.xls");

Jusque là pas de problème.

Maintenant, je voudrais faire de même avec un fichier de nom composé (Rapport num1.xls).
Java considère les espaces comme des délimiteurs entre les chaines de caractères, j'ai donc trouvé cette parade:

Runtime.getRuntime().exec("cmd.exe /c start C:\\Docume~1\\Administrateur\\workspace\\Eclipse\\Test1\\Rappor~1\\Rappor~1.xls");
Ce qui fonctionne très bien.

Mon problème se situe ici: comment faire lorsque dans mon dossier j'ai un fichier "Rapport num1.xls" et un fichier "Rapport num2.xls"? Les deux s'abbrègent par "Rappor~1.xls"...
Y a-til un caractère spécial permettant de ne pas considérer un espace comme un délimiteur?

Merci de votre aide

Autres pages sur : nom fichier compose

Lassé par la pub ? Créez un compte

essaye plutôt d'entourer le chemin par des "
  1. Runtime.getRuntime().exec("cmd.exe /c start \"C:\\Docume~1\\Administrateur\\workspace\\Eclipse\\Test1\\Rappor~1\\Rapport num1.xls\"" );


pour ce qui des noms de fichiers windows les nommes par ordre ~1, ~2 ainsi de suite

non, les 2 ne s'abrège pas de la même façon.
le 2eme devrait s'abréger Rappor~2.xls.

et
1. je pense que les guillements devraient marché, comme indiqué par coca.
2. pour les séparateur de répertoire, utilise System.getProperty("file.separator");

Les ~1, ~2... fonctionnent.

Maintenant les "" ça me fait un truc bizarre: ça m'ouvre une invite de commande où je suis placée dans le répertoire
C:\Documents and Settings\Administrateur\workspace\Eclipse\Test1
et dont le titre (de l'invite de cmd) est
C:\Documents and Settings\Administrateur\workspace\Eclipse\Test1\Rappor~1\Rapport num1.xls

Donc ça fonctionne mais ca ne fait pas ce que je veux.

cmd /?
donne :
##################
1. Si toutes les conditions suivantes sont respectées, alors les
guillemets de la ligne de commande sont conservés :

- pas d'option /S
- exactement deux caractères guillemet
- aucun caractère spécial entre les deux caractères guillemet, un
caractère spécial étant : &<>()@^|
- il y a un ou plusieurs espaces entre les deux caractères guillemet
- la chaîne comprise entre les deux guillemets est le nom d'un fichier
exécutable.

2. Dans le cas contraire, l'ancien comportement vérifiera si le premier
caractère est un caractère guillemet et si tel est le cas, enlèvera le
premier caractère et le dernier caractère guillemet de la ligne de
commande, préservant tout texte se trouvant après le dernier caractère
guillemet.
##############################
Ce n'est pas un executable, donc ça foiraute.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde