begin process at 2012 02 13 00:00:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > EXTRAIRE LE RÉPERTOIRE D'UN FICHIER, SON EXTENSION, SON NOM, SANS FSO MAIS PAR UN ALGO

EXTRAIRE LE RÉPERTOIRE D'UN FICHIER, SON EXTENSION, SON NOM, SANS FSO MAIS PAR UN ALGO


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :extraire, répertoire, fichier, extension, nom Niveau :Débutant Date de création :06/04/2004 Date de mise à jour :07/04/2004 16:04:58 Vu :15 042

Auteur : azerty25

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note


 Description

J'ai besoin de ceci pour trouver dans quel répertoire est installé un programme a travers la base de registres, qui me renvoyai le chemin du fichier uninstall, et comme j'ai besoin d'un autre fichier de se répertoire pour mes manips, j'ai eu besoin d'extraire le chemin du dossier.

Source

  • 'Routine postée
  • Private Sub Command1_Click()
  • Text2.Text = ExtraireChemin(Text1.Text)
  • End Sub
  • Private Function ExtraireChemin(fichier As String)
  • Dim Chaine As String
  • Dim iPass As Single
  • iPass = 0
  • Do While Left$(Chaine, 1) <> "\"
  • Chaine = Right$(fichier, iPass)
  • iPass = iPass + 1
  • Loop
  • ExtraireChemin = Left$(fichier, Len(fichier) - Len(Chaine))
  • End Function
  • '---------------
  • '2eme Exemple : pouvant renvoyer chemin, fichier, et extension, pouvant servir d'alternative a FSO, gèrent les précisions telle que 2 extensions sur un fichier
  • Dim myPath As String
  • myPath = "c:\tests\waza.txt.waz"
  • n = InStrRev(myPath, "\")
  • myfile = Mid(myPath, n + 1)
  • MsgBox "Fichier : " & myfile
  • myFolder = Left(myPath, n - 1)
  • MsgBox "Dossier : " & myFolder
  • myExtension = Split(myPath, ".")
  • If UBound(myExtension) = 0 Then
  • MsgBox "Ce fichier n'a pas d'extension"
  • ElseIf UBound(myExtension) > 0 Then
  • MsgBox "Extension : " & myExtension(UBound(myExtension))
  • End If
'Routine postée

Private Sub Command1_Click()
Text2.Text = ExtraireChemin(Text1.Text)
End Sub

Private Function ExtraireChemin(fichier As String)
Dim Chaine As String
Dim iPass As Single
iPass = 0
Do While Left$(Chaine, 1) <> "\"
Chaine = Right$(fichier, iPass)
iPass = iPass + 1
Loop
ExtraireChemin = Left$(fichier, Len(fichier) - Len(Chaine))
End Function

'---------------

'2eme Exemple : pouvant renvoyer chemin, fichier, et extension, pouvant servir d'alternative a FSO, gèrent les précisions telle que 2 extensions sur un fichier

Dim myPath As String
myPath = "c:\tests\waza.txt.waz"
n = InStrRev(myPath, "\")
myfile = Mid(myPath, n + 1)
MsgBox "Fichier : " & myfile
myFolder = Left(myPath, n - 1)
MsgBox "Dossier : " & myFolder
myExtension = Split(myPath, ".")
    If UBound(myExtension) = 0 Then
        MsgBox "Ce fichier n'a pas d'extension"
    ElseIf UBound(myExtension) > 0 Then
        MsgBox "Extension : " & myExtension(UBound(myExtension))
    End If



 Sources du même auteur

Source avec Zip SAVOIR SI UN OBJET EST CACHÉ PAR UN AUTRE(FENÊTRES, CONTROLE...
Source avec Zip WINDOWSMOVE(R) - DÉPLACER DES FENÊTRES (HANDLES) QUI NE SONT...
TECHNIQUES POUR EMPECHER LE DÉCHARGEMENT DE LA FEUILLE
SAVOIR SI UNE FENETRE EST AU PREMIER PLAN PERMANENT
Source avec Zip Source avec une capture TOPMOST M@N@G(R) - METTRE UNE FENETRE AU PREMIER PLAN PERMAN...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
[OOBASIC] DIRLIST - FONCTION LISTE DES FICHIERS / RÉPERTOIRE... par pifou25
Source avec Zip Source avec une capture Source .NET (Dotnet) RENOMMER FICHIERS MASSIVEMENT par aus3004
Source avec Zip Source avec une capture EXTRACTION DES FICHIERS IMG DE GTA 3 (VICE CITY ET SAN ANDRE... par gta126
Source avec Zip Source avec une capture Source .NET (Dotnet) FICHIER TRAITEMENT EN BLOC : RECHERCHER-REMPLACER ET MODIFI... par Stephane33

Commentaires et avis

Commentaire de thierrydelepine le 07/04/2004 09:58:21

Tu as ca aussi, beaucoup mieux puisque plus d'infos encore.
ce n'est pas debile comme tu dis on peux en avoir besoin dans des traitenements, cela a deja ete mon cas.

dans le code ci dessous tu peux recuperer le repertoire, le repertoire parent, l'extension, le nom du fichier sans extension.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("c:\windows\explorer.exe")
msgbox "Absolute path: " & objFSO.GetAbsolutePathName(objFile)
msgbox "Parent folder: " & objFSO.GetParentFolderName(objFile)
msgbox "File name: " & objFSO.GetFileName(objFile)
msgbox "Base name: " & objFSO.GetBaseName(objFile)
msgbox "Extension name: " & objFSO.GetExtensionName(objFile)
Set objFile = nothing
Set objFSO = nothing

lol

Commentaire de azerty25 le 07/04/2004 10:12:46

C'est bien vrai, je ne connaissai pas, merci pour cette infos, mais je préfère ma source puisque je n'ai pas besoin de DLL supplémentaires ;)

Commentaire de thierrydelepine le 07/04/2004 10:21:05

il existe plein de facon pour arriver au meme resultat, uitlise donc celle que tu veux suivant tes besoins.

pour info: cette methode ne necessite aucune DLL supplementaire si tu fais un package de diffusion de ton appli car "Scripting.FileSystemObject" utilise le scripting de microsoft intégré a IE depuis la version 5.0, il suffit donc que IE 5.0 mini soit installé sur le poste client pour que mon code marche, pas de DLL supplementaire.

Commentaire de azerty25 le 07/04/2004 10:39:07

C'est bien vrai, j'avai pas fait attention. Sa fera au moins un exemple de petit algo aux débutants ;)

Commentaire de magic le 07/04/2004 11:06:17

Ta boucle recherche la derniére occurrence du séparateur "\".
Il y a maintenant une fonction qui fait cela dans VB6:

n = inStrRev(myPath, "\")

Ce qui permet d'extraire ce qui t'es utile:

myFile = mid(myPath, n+1)
myFolder = left(myPath, n-1)

Commentaire de yomm le 07/04/2004 11:13:53

Je suis pour la façon de magic et je venais d'ailleurs la poster...mais comme c'est déjà fait ;-)

Commentaire de thierrydelepine le 07/04/2004 11:15:26

on peut aussi faire :

Dim MyListChemin() As String

Fichier = "c:\windows\explorer.exe"

MyListChemin = Split(Fichier, "\", -1, vbTextCompare)
For i = 0 To UBound(MyListChemin)
    MsgBox MyListChemin(i)
Next

et la on recupere - "c:"
                         - "windows"
                         - "explorer.exe"

il y a tellement de methodes......

Commentaire de azerty25 le 07/04/2004 11:28:51

Merci pour vos infos, c'est vrai qu'il y a beaucoup de méthodes :-/

Commentaire de interkira le 07/04/2004 11:46:46

Le FSO n'est pas du VB mais du VBS !! Mettre du VBS dans du Vb c'est comme mettre du gasoil dans une moto ! Dire qu'il ne faut pas de DLLs supplémentaires ?!! Faut IE 5 non ? donc....j'ai netscape j'ai enlevé IE et et... Ca fonctionne pas comme c'est dommage.

Sinon ton code est pas mal azerty25, mais essais de supprimer le Do while c'est une boucle inutile, il y a des fonctions pour rechercher la position de caractére (ou chaine) comme InstrRev.

I = InStrRev(UCase(pchemin), "\")
Left(pchemin, I)

Sinon il y a des dlls qui sont faite pour ça et qui font mieux que le FSO et en bcp plus rapide et intégré au systéme Windows faut les trouver. ;o)

@+

Commentaire de azerty25 le 07/04/2004 12:44:28

J'ai mis à jour le code, j'ai rajouté un 2eme exemple, n'utilisant pas de boucle. Il pourrai remplacer les fonctions FSO, car la 2eme méthode fait les memes actions.
thierrydelepine, interkira a raison, c'est bien ce que je disai aussi, les FSO nécessitent bien des fichiers supplémentaires par rapport à VB.
Vous avez vu que j'ai utilisé une boucle pour mon premier exemple, je ne connaissai pas InStrRev (mais déja vu sans savoir l'utilité), j'ai comme vous pouvez le voir fait avec les moyens du bord, cad ce que je connai. Connaitriez vous un site qui traite des fonctions de base telles que celle-ci ou encore des mots clés de VB de bases ? (style on, and, if etc etc) Je pense etre loin de tous les connaitre, d'ou cette demande ... ;)

Commentaire de jp50 le 07/04/2004 15:42:37

Je viens d'apprendre la méthode InStrRev. Mais j'ai trouvé un problème pour l'extension. Tu suppose que l'extension est de trois lettres. Je travaille en direct 3D et plusieurs de mes fichiers sont en *.x alors ta fonction me donne "e.x" au lieu de juste x.

Tu pourrais faire quelque chose comme

Dim myPath As String
myPath = "c:\tests\waza.x"
myExtension = Split(myPath, ".")
MsgBox "Extension : " & myExtension(UBound(myExtension))

En passant j'ai mis la dernière occurence de myExtension car j'ai quelquefois des fichier du genre "Maison.arbre.x"

Jp50

Commentaire de azerty25 le 07/04/2004 16:06:45

Merci pour la précision, j'ai mis à jour le code ;)

Commentaire de Renfield le 07/04/2004 22:37:07 administrateur CS

Juste une remarque sur la première routine....

Je n'aime pas trop ta boucle While, mais j'aim encore moins que tu découpe a chaque iteration ta chaine.... c'est pas franchement économique, tout ca ;)
un Mid$ serait peut être plus adapté ?

En ce qui concerne la deuxieme routine, pourquoi utiliser tantot Split, tantot Instrrev ?

Commentaire de azerty25 le 08/04/2004 06:54:46

Pour la première routine, ne connaissant pas certaines instructions à ce moment, j'ai fait avec les moyens du bord ;) ET je découpe la chaine à chaque itération afin de trouver ou étai le "\".

Pour la 2eme, InStrRev car il faut trouver le dernier "\" dans la chaine pour extraire le nom du fichier, et ensuite Split car je veux séparer les morceaux de chaines séparés par des "." pour extraire l'extension, c'est la méthode qu'a proposé magic (les 2 méthodes en fait). Et comme je veux l'extension, c'est le dernier élément du tableau virtuel créé, sa permet de prendre en compte les fichiers ayant plusieurs extensions (ex : fichier.numero2.doc) et ainsi de prendre en comptes les extensions &lt;&gt; de 3 caractères (html, x, phtml ...)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

extraire l'extension d'un fichier dans une chaine [ par rober ] RoberBonjour,voila j'ai une chaine:"c:\tata\tot\titi\montruc.drw.56"je voudrais savoir si l'estension du fichier est bien ".drw"comment puis verifier conversion d'un extension d'un fichier ASCII [ par hatems ] je cherche une code qui me permet de convertir l'extension d'un fichier ASCII en un fichier text,aidez moi svp!!! Extraire ressources (string table) d'un fichier [ par allthew3 ] Bonjour à tous,J'ai beau chercher je ne trouve pas comment faire ...J'aimerais extraire toutes les chaines que contient un fichier (la String Table) : Choix d'extension de fichier avec "Process" ? [ par Tyrell2 ] Bonjour,je developpe un programme pour "executer en tant que" d'autres programmes, en utilisant "new Process"dans la partie "Process.stratinfo.filenam recherche d'un répertoire de sauvegarde. [ par norber59480 ] Bonjour tous le monde.Je réalise un programme Vb et je sauvegarde des données dans un fichier texte. pour l'instant j'enregistre ds un fichier que j'a Identification et Extraction de fichier dans nouveau répertoire [ par Geprocor ] Bonjour, Je suis face à la problématique suivante : &gt; J'ai une multitude de fichiers photos (.jpg) dans un répertoire "A". Chaque fichier étant nom copier un fichier word vers un répertoire sur un serveur [ par MATHOD ] Bonjour, je code en Visual basic sous Word j'ai un toto.doc, au départ, pas de code dedans, c'est une feuille Word simple comme je n'ai pas de poss lire et extraire une ligne d' un fichier texte (vbs) [ par liocifer ] Salut,Je viens de débuter en vbs et j' ai un souci pour lire ligne à ligne un fichier texte, puis une fois trouver la ligne correspondant à la valeur Extraire un auto extractible sous VB [ par norber59480 ] Bjr tous le monde! J'ai réaliser un fichier Zipper (Winzip) en autoextractible, et je voudrais le décompresser dans un programme VB. Pour l'instant j


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,493 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales