[VBScript] [RESOLU] fonction SPLIT

fonction SPLIT [VBScript] [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 24-02-2006 à 15:20:55    

bonjour !
 
j'ai utilisé cette fonction pour définir l'extension pour un fichier saisie dans une inputbox.
je lui ai donc dis de faire la séparation à chaque point, puisque normalement un fichier ne comporte que le point juste avant son extension.
 
malheureusement, il y a quand même des fichiers avec plusieurs points, et meme si je peux en séparer 2 et joindre les 2 premiers bout pour n'avoir que l'extension, ça marche dans ce cas-la seuleument s'il y a 2 points en tout.
 
j'ai regardé un peu la fonction split, mais je n'ai pas réussi a trouver si elle permet de splitter le dernier caractère choisi.
 
car dans ce cas, il n'y aurait aucun probleme : meme s'il y a 50 points, l'extension serait définie par le tout dernier.
 
j'ai besoin de faire comme ça par rapport à une recherche de fichier en WMI, qui demande le "filename" et "extension", j'ai cherché s'il existe un moyen de prendre un nom de fichier en entier dans une seule variable WMI, mais si je cherche test.txt ou test, basé sur le "filename", le résultat ne me convient pas (il cherche test.txt et me trouve test.txt.ink donc pour lui je n'avais pas indiqué l'extension - ou bien cherche tout les fichier ayant test dans leur nom)
 
merci encore d'avance ! ^_^


Message édité par anthony0000 le 27-02-2006 à 15:16:43
Reply

Marsh Posté le 24-02-2006 à 15:20:55   

Reply

Marsh Posté le 24-02-2006 à 15:45:36    

Regarde la fonction InStrRev() qui recherche un caractère dans une chaine en scannant de la fin vers le début.
Cela renverra la position de ton dernier point et à coup de Left$() et Right$(), ça sera un jeu d'enfant de séparer le nom de fichier de son extension
Attention à bien prévoir le cas ou aucun point n'existe dans la chaine.

Reply

Marsh Posté le 24-02-2006 à 16:27:49    

c'est ptet très bête, mais tes extensions sont elles forcément de 3 caractères ?
 
si c'est le cas suffit de faire :
 

Code :
  1. mavar = "test.test.test.test.com"
  2. extension = right(mavar,3)
  3. wscript.echo extension


 
si tes extensions sont variables (pas de bol), j'ai un truc


Message édité par pilosite le 24-02-2006 à 16:33:06

---------------
Envie de scripting ? Lisez donc "Scripting Windows" aux Editions Eyrolles ! tout pour apprendre le scripting orienté infrastructure Microsoft, en français dans les textes et exemples.  http://www.eyrolles.com/Informatiq [...] 212116922/
Reply

Marsh Posté le 24-02-2006 à 16:31:13    

oups...
 
la voici :
 

Code :
  1. var1 = "test.com"
  2. var2 = "test.test.com"
  3. var3 = "test.test.test.coeeezm"
  4. ' on split une des variables (la 3ème est bien :) )
  5. mysplit = split(var3,"." )
  6. ' je chope le UBound de mon tableau (il te donne le dernier split en fait)
  7. dernierpoint = UBound(mysplit)
  8. ' donc l'extension est forcément le dernier split)
  9. extension = mysplit(dernierpoint)
  10. ' et donc extension, c'est tout bon!
  11. wscript.echo extension


Message édité par pilosite le 24-02-2006 à 16:32:53

---------------
Envie de scripting ? Lisez donc "Scripting Windows" aux Editions Eyrolles ! tout pour apprendre le scripting orienté infrastructure Microsoft, en français dans les textes et exemples.  http://www.eyrolles.com/Informatiq [...] 212116922/
Reply

Marsh Posté le 27-02-2006 à 10:40:20    

Bonjour,  
 
je vous remercie pour vos réponses,
 
d'après ce que m'a dit tegu, j'ai réussi à faire ce que je voulais, à savoir séparer l'extension d'un nom de fichier, tout en gardant le nom sans l'extension.
mais il est vrai que ça ne marche qu'avec un extension de 3 caractères, ni plus ni moins.
 
j'ai donc ensuite essayé la soluce de pilosite, ça fonctionne a merveille pour les extensions.
mais par contre je n'arrive plus à prendre le nom du fichier sans l'extension
je pourrais faire un join de chaque morceau trouvé sans le dernier, mais la encore il faudrait que je connaisse avant le nombre de morceaux.
 
je m'y replonge

Reply

Marsh Posté le 27-02-2006 à 10:46:43    

Je suis désolé anthony000, mais tu racontes n'importe quoi.
Ma solution fonctionne quelque soit la longueur de l'extension !


Message édité par tegu le 27-02-2006 à 10:46:56
Reply

Marsh Posté le 27-02-2006 à 11:11:21    

je pense que ça doit être de la façon dont je l'ai fait qui fait que ça ne marche qu'avec une extension de 3 caractères ^_^

Reply

Marsh Posté le 27-02-2006 à 15:16:27    

j'ai réussi, ça fonctionne normalement maintenant
 
merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed