2009-09-22 5 views
0

UTILISATION DE VB6Comment rechercher un fichier dans le chemin spécifié?

Je souhaite rechercher un fichier à partir du chemin.

Par exemple.

Path = "C: \ newFolder \" nom de fichier = * .txt, * .fin

Je veux tous les fichiers * .txt, * fichier .fin du newfloder.

Besoin de code VB6 Aide.

+1

en double de cette question http://stackoverflow.com/questions/729636/any-function-for-listing-out-all-the-files-of-a -specified-type-dans-un-dossier-en-vb6 – MarkJ

Répondre

1

Utilisez Scripting.FileSystemObject.

Appelez-le avec GetFolder ("C: \ Newfolder"), puis passez en revue les fichiers de ce dossier avec la propriété .Files et filtrez-les sur les extensions à l'aide de la méthode GetExtensionName.

Par exemple:

Dim fso as Object: Set fso = CreateObject("Scripting.FileSystemObject") 
Dim f as Object 
For Each f in fso.GetFolder("<folderpath>").Files 
    If fso.GetExtensionName(f.Path) = "txt" Then 'or maybe it's .txt, I'm not sure 
     ' also test for 'fin' 
     '... do stuff 
    End If 
Next f 
+0

Obtention Erreur en tant qu'objet non pris en charge – Gopal

+0

À quel moment? Sur la ligne CreateObject? Si oui, assurez-vous que le script d'exécution est installé (devrait être le cas sur la plupart des systèmes, quel OS utilisez-vous?) –

+0

xp Service Pack2 – Gopal

0

Vérifiez la Scripting.FileSystemObject.
Dans votre projet, ajoutez une référence à "Microsoft Scripting Runtime".

Ensuite, vous pouvez faire quelque chose comme ceci:

Dim fso As Scripting.FileSystemObject 
Set fso = New Scripting.FileSystemObject 

Dim fld As Scripting.Folder 
Set fld = fso.GetFolder("d:\temp\newfolder") 

Dim i As Integer 
Dim ext As String 
Dim fl As Scripting.File 
For Each fl In fld.files 
    'get extension 
    ext = Mid(fl.Name, Len(fl.Name) - 2) 
    If ext = "txt" Or ext = "fin" Then 
     'do something with the file 
    End If 
Next fl 

Ceci est l'un des domaines qui a obtenu tellement mieux avec .NET.

+0

Vous devez probablement utiliser GetExtensionName pour obtenir l'extension du fichier. –

+0

Vous avez oublié la méthode fso.GetExtensionName (voir la réponse de deathofrats). Vous pouvez probablement utiliser cela au lieu de ce que j'ai fait. –

0

Ajoutez simplement un CDirDrill class qui fait tout pour vous, en VB6 natif complet. Une autre excellente solution de Karl Peterson :)

Le FileSystemObject n'est pas recommandé pour plusieurs raisons: un, il ajoute une dépendance, et deux, cela dépend du script, qui peut être désactivé par stratégie. J'ai eu des bogues parce que certains clients ont réussi à nettoyer scrrun.dll sur leur PC. Éliminer les dépendances à moins qu'elles ne vous aident vraiment beaucoup.

BTW cette question est un double de this

Questions connexes