Tom's Guide > Forum > Programmation > nom de fichier composé
Mot :    Pseudo :           
 

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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

essaye plutôt d'entourer le chemin par des "

Code :
  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

Répondre à coca25

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" );

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42
- 0 +

sinon remplace les espaces...-_-

------------------------------ Log33kiel | Listing de logiciels gratuits ! | Log33kiel | Porno gratuit
Répondre à Loni

Super!

Merci beaucoup.

Evidemment je pouvais remplacer les espaces mais je voulais surtout apprendre comment résoudre le problème. Et puis Ca pourrait servir un jour, dans un traitement très automatisé de noms de fichiers.

Répondre à towanda@IDN

super ?
tu veux dire que tu as trouvé ? les "" ça marche ?

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

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.

Répondre à towanda@IDN

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.

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

Ok, merci pour tes explications.

Répondre à towanda@IDN
Tom's Guide > Forum > Programmation > nom de fichier composé
Aller à :

Il y a 766 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens