-----Message d'origine-----
Bonjour,
Comment dois-je m'y prendre pour effectuer une recherche
de bidouiller quelques trucs sur ceux-ci par une
fichiers" ?
Je voudrais rechercher tous les fichiers contenus dans
compris les sous dossiers), correspondant à certain
("*.doc" par exemple).
J'ai cherché dans les archives du forum, mais l'exemple
parcours les fichiers du dossier spécifié, les fichiers
mas pas les fichiers des sous sous dossiers (ni les
Merci
--
Nicolas B.
.
-----Message d'origine-----
Bonjour,
Comment dois-je m'y prendre pour effectuer une recherche
de bidouiller quelques trucs sur ceux-ci par une
fichiers" ?
Je voudrais rechercher tous les fichiers contenus dans
compris les sous dossiers), correspondant à certain
("*.doc" par exemple).
J'ai cherché dans les archives du forum, mais l'exemple
parcours les fichiers du dossier spécifié, les fichiers
mas pas les fichiers des sous sous dossiers (ni les
Merci
--
Nicolas B.
.
-----Message d'origine-----
Bonjour,
Comment dois-je m'y prendre pour effectuer une recherche
de bidouiller quelques trucs sur ceux-ci par une
fichiers" ?
Je voudrais rechercher tous les fichiers contenus dans
compris les sous dossiers), correspondant à certain
("*.doc" par exemple).
J'ai cherché dans les archives du forum, mais l'exemple
parcours les fichiers du dossier spécifié, les fichiers
mas pas les fichiers des sous sous dossiers (ni les
Merci
--
Nicolas B.
.
Salut,
J'ai eu ce probléme et j'ai été obligé de bidouiller une
fonction, c'est surement pas le meilleur mais ça marche :
1) Declarer un tableau de type string :
Public tabMoveDossier() As String
2) Ensuite remplir le tableau avec 2 valeurs avant
d'appeler la fonction :
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
3) Appeler la fonction
4) LA FONCTION :
Explorer récursivement chaque dossier qui sera mémorisé
dans le tableau et testé si chaque réponse à déjà eté
prise en compte. Si la réponse n'est pas mémorisée par le
tableau, redimentionner ce dernier et ajouter le nouveau
dossier, mettre la variable blnReprise à True pour
reprendre la recherche.
Une fois la rechercher terminée, on récupére un tableau
avec chaque sous-dossier du sous-dossier, etc ...
A partir de là, on peut explorer recursivement chaque
dossier du tableau pour récuperer les fichiers présents.
**********************************************************
Private Function f_MoveDossier()
Dim sDossiers(), sDossier As String
Dim i, j, k, l As Integer
j = tabMoveDossier(0)
Dim blnExist, blnReprise As Boolean
blnReprise = False
For i = 1 To j
sDossiers = Directory.GetDirectories
(tabMoveDossier(i))
For Each sDossier In sDossiers
blnExist = False
For k = 1 To j
If (tabMoveDossier(k) = sDossier) Then
blnExist = True
Exit For
End If
Next
If (blnExist = False) Then
l = tabMoveDossier(0) + 1
ReDim Preserve tabMoveDossier(l)
tabMoveDossier(0) = l
tabMoveDossier(l) = sDossier
blnReprise = True
End If
Next
Next
If (blnReprise = True) Then f_MoveDossier()
End Function
**********************************************************
Ne pas oublier de reinitialiser le tableau avant de faire
une nouvelle recherche :
Dim tabReset(1) As String
tabMoveDossier = tabReset
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
Voila, c'est surement pas ce qui se fait de mieux, mais
si quelqu'un a une meilleure solution, je suis preneur.
PS : Si vous pensez à la methode Directory.Move, il faut
savoir que celle-ci n'est valable que lorsque la source
et la destination se trouvent sur le même lecteur. Elle
ne fonctionne pas pour deplacer des fichiers du lecteur
C: au lecteur D:.
Laurent
Salut,
J'ai eu ce probléme et j'ai été obligé de bidouiller une
fonction, c'est surement pas le meilleur mais ça marche :
1) Declarer un tableau de type string :
Public tabMoveDossier() As String
2) Ensuite remplir le tableau avec 2 valeurs avant
d'appeler la fonction :
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
3) Appeler la fonction
4) LA FONCTION :
Explorer récursivement chaque dossier qui sera mémorisé
dans le tableau et testé si chaque réponse à déjà eté
prise en compte. Si la réponse n'est pas mémorisée par le
tableau, redimentionner ce dernier et ajouter le nouveau
dossier, mettre la variable blnReprise à True pour
reprendre la recherche.
Une fois la rechercher terminée, on récupére un tableau
avec chaque sous-dossier du sous-dossier, etc ...
A partir de là, on peut explorer recursivement chaque
dossier du tableau pour récuperer les fichiers présents.
**********************************************************
Private Function f_MoveDossier()
Dim sDossiers(), sDossier As String
Dim i, j, k, l As Integer
j = tabMoveDossier(0)
Dim blnExist, blnReprise As Boolean
blnReprise = False
For i = 1 To j
sDossiers = Directory.GetDirectories
(tabMoveDossier(i))
For Each sDossier In sDossiers
blnExist = False
For k = 1 To j
If (tabMoveDossier(k) = sDossier) Then
blnExist = True
Exit For
End If
Next
If (blnExist = False) Then
l = tabMoveDossier(0) + 1
ReDim Preserve tabMoveDossier(l)
tabMoveDossier(0) = l
tabMoveDossier(l) = sDossier
blnReprise = True
End If
Next
Next
If (blnReprise = True) Then f_MoveDossier()
End Function
**********************************************************
Ne pas oublier de reinitialiser le tableau avant de faire
une nouvelle recherche :
Dim tabReset(1) As String
tabMoveDossier = tabReset
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
Voila, c'est surement pas ce qui se fait de mieux, mais
si quelqu'un a une meilleure solution, je suis preneur.
PS : Si vous pensez à la methode Directory.Move, il faut
savoir que celle-ci n'est valable que lorsque la source
et la destination se trouvent sur le même lecteur. Elle
ne fonctionne pas pour deplacer des fichiers du lecteur
C: au lecteur D:.
Laurent
Salut,
J'ai eu ce probléme et j'ai été obligé de bidouiller une
fonction, c'est surement pas le meilleur mais ça marche :
1) Declarer un tableau de type string :
Public tabMoveDossier() As String
2) Ensuite remplir le tableau avec 2 valeurs avant
d'appeler la fonction :
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
3) Appeler la fonction
4) LA FONCTION :
Explorer récursivement chaque dossier qui sera mémorisé
dans le tableau et testé si chaque réponse à déjà eté
prise en compte. Si la réponse n'est pas mémorisée par le
tableau, redimentionner ce dernier et ajouter le nouveau
dossier, mettre la variable blnReprise à True pour
reprendre la recherche.
Une fois la rechercher terminée, on récupére un tableau
avec chaque sous-dossier du sous-dossier, etc ...
A partir de là, on peut explorer recursivement chaque
dossier du tableau pour récuperer les fichiers présents.
**********************************************************
Private Function f_MoveDossier()
Dim sDossiers(), sDossier As String
Dim i, j, k, l As Integer
j = tabMoveDossier(0)
Dim blnExist, blnReprise As Boolean
blnReprise = False
For i = 1 To j
sDossiers = Directory.GetDirectories
(tabMoveDossier(i))
For Each sDossier In sDossiers
blnExist = False
For k = 1 To j
If (tabMoveDossier(k) = sDossier) Then
blnExist = True
Exit For
End If
Next
If (blnExist = False) Then
l = tabMoveDossier(0) + 1
ReDim Preserve tabMoveDossier(l)
tabMoveDossier(0) = l
tabMoveDossier(l) = sDossier
blnReprise = True
End If
Next
Next
If (blnReprise = True) Then f_MoveDossier()
End Function
**********************************************************
Ne pas oublier de reinitialiser le tableau avant de faire
une nouvelle recherche :
Dim tabReset(1) As String
tabMoveDossier = tabReset
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
Voila, c'est surement pas ce qui se fait de mieux, mais
si quelqu'un a une meilleure solution, je suis preneur.
PS : Si vous pensez à la methode Directory.Move, il faut
savoir que celle-ci n'est valable que lorsque la source
et la destination se trouvent sur le même lecteur. Elle
ne fonctionne pas pour deplacer des fichiers du lecteur
C: au lecteur D:.
Laurent
Merci, Laurent.
Je testerai ça demain. C'est quand même bizarre qu'il n'existe pas de
fonction toute faite (comme FileSearch en VBA).
A+
--
Nicolas B.
Laurent B a écrit :
> Salut,
> J'ai eu ce probléme et j'ai été obligé de bidouiller une
> fonction, c'est surement pas le meilleur mais ça marche :
>
> 1) Declarer un tableau de type string :
>
> Public tabMoveDossier() As String
>
> 2) Ensuite remplir le tableau avec 2 valeurs avant
> d'appeler la fonction :
>
> tabMoveDossier(0) = 1
> tabMoveDossier(1) = "Path_Dossier_à_Explorer"
>
> 3) Appeler la fonction
>
> 4) LA FONCTION :
>
> Explorer récursivement chaque dossier qui sera mémorisé
> dans le tableau et testé si chaque réponse à déjà eté
> prise en compte. Si la réponse n'est pas mémorisée par le
> tableau, redimentionner ce dernier et ajouter le nouveau
> dossier, mettre la variable blnReprise à True pour
> reprendre la recherche.
>
> Une fois la rechercher terminée, on récupére un tableau
> avec chaque sous-dossier du sous-dossier, etc ...
> A partir de là, on peut explorer recursivement chaque
> dossier du tableau pour récuperer les fichiers présents.
>
>
> **********************************************************
> Private Function f_MoveDossier()
> Dim sDossiers(), sDossier As String
> Dim i, j, k, l As Integer
> j = tabMoveDossier(0)
> Dim blnExist, blnReprise As Boolean
>
> blnReprise = False
> For i = 1 To j
> sDossiers = Directory.GetDirectories
> (tabMoveDossier(i))
> For Each sDossier In sDossiers
> blnExist = False
> For k = 1 To j
> If (tabMoveDossier(k) = sDossier) Then
> blnExist = True
> Exit For
> End If
> Next
> If (blnExist = False) Then
> l = tabMoveDossier(0) + 1
> ReDim Preserve tabMoveDossier(l)
> tabMoveDossier(0) = l
> tabMoveDossier(l) = sDossier
> blnReprise = True
> End If
> Next
> Next
> If (blnReprise = True) Then f_MoveDossier()
> End Function
> **********************************************************
>
> Ne pas oublier de reinitialiser le tableau avant de faire
> une nouvelle recherche :
>
> Dim tabReset(1) As String
> tabMoveDossier = tabReset
> tabMoveDossier(0) = 1
> tabMoveDossier(1) = "Path_Dossier_à_Explorer"
>
>
> Voila, c'est surement pas ce qui se fait de mieux, mais
> si quelqu'un a une meilleure solution, je suis preneur.
>
> PS : Si vous pensez à la methode Directory.Move, il faut
> savoir que celle-ci n'est valable que lorsque la source
> et la destination se trouvent sur le même lecteur. Elle
> ne fonctionne pas pour deplacer des fichiers du lecteur
> C: au lecteur D:.
>
> Laurent
Merci, Laurent.
Je testerai ça demain. C'est quand même bizarre qu'il n'existe pas de
fonction toute faite (comme FileSearch en VBA).
A+
--
Nicolas B.
Laurent B a écrit :
> Salut,
> J'ai eu ce probléme et j'ai été obligé de bidouiller une
> fonction, c'est surement pas le meilleur mais ça marche :
>
> 1) Declarer un tableau de type string :
>
> Public tabMoveDossier() As String
>
> 2) Ensuite remplir le tableau avec 2 valeurs avant
> d'appeler la fonction :
>
> tabMoveDossier(0) = 1
> tabMoveDossier(1) = "Path_Dossier_à_Explorer"
>
> 3) Appeler la fonction
>
> 4) LA FONCTION :
>
> Explorer récursivement chaque dossier qui sera mémorisé
> dans le tableau et testé si chaque réponse à déjà eté
> prise en compte. Si la réponse n'est pas mémorisée par le
> tableau, redimentionner ce dernier et ajouter le nouveau
> dossier, mettre la variable blnReprise à True pour
> reprendre la recherche.
>
> Une fois la rechercher terminée, on récupére un tableau
> avec chaque sous-dossier du sous-dossier, etc ...
> A partir de là, on peut explorer recursivement chaque
> dossier du tableau pour récuperer les fichiers présents.
>
>
> **********************************************************
> Private Function f_MoveDossier()
> Dim sDossiers(), sDossier As String
> Dim i, j, k, l As Integer
> j = tabMoveDossier(0)
> Dim blnExist, blnReprise As Boolean
>
> blnReprise = False
> For i = 1 To j
> sDossiers = Directory.GetDirectories
> (tabMoveDossier(i))
> For Each sDossier In sDossiers
> blnExist = False
> For k = 1 To j
> If (tabMoveDossier(k) = sDossier) Then
> blnExist = True
> Exit For
> End If
> Next
> If (blnExist = False) Then
> l = tabMoveDossier(0) + 1
> ReDim Preserve tabMoveDossier(l)
> tabMoveDossier(0) = l
> tabMoveDossier(l) = sDossier
> blnReprise = True
> End If
> Next
> Next
> If (blnReprise = True) Then f_MoveDossier()
> End Function
> **********************************************************
>
> Ne pas oublier de reinitialiser le tableau avant de faire
> une nouvelle recherche :
>
> Dim tabReset(1) As String
> tabMoveDossier = tabReset
> tabMoveDossier(0) = 1
> tabMoveDossier(1) = "Path_Dossier_à_Explorer"
>
>
> Voila, c'est surement pas ce qui se fait de mieux, mais
> si quelqu'un a une meilleure solution, je suis preneur.
>
> PS : Si vous pensez à la methode Directory.Move, il faut
> savoir que celle-ci n'est valable que lorsque la source
> et la destination se trouvent sur le même lecteur. Elle
> ne fonctionne pas pour deplacer des fichiers du lecteur
> C: au lecteur D:.
>
> Laurent
Merci, Laurent.
Je testerai ça demain. C'est quand même bizarre qu'il n'existe pas de
fonction toute faite (comme FileSearch en VBA).
A+
--
Nicolas B.
Laurent B a écrit :
> Salut,
> J'ai eu ce probléme et j'ai été obligé de bidouiller une
> fonction, c'est surement pas le meilleur mais ça marche :
>
> 1) Declarer un tableau de type string :
>
> Public tabMoveDossier() As String
>
> 2) Ensuite remplir le tableau avec 2 valeurs avant
> d'appeler la fonction :
>
> tabMoveDossier(0) = 1
> tabMoveDossier(1) = "Path_Dossier_à_Explorer"
>
> 3) Appeler la fonction
>
> 4) LA FONCTION :
>
> Explorer récursivement chaque dossier qui sera mémorisé
> dans le tableau et testé si chaque réponse à déjà eté
> prise en compte. Si la réponse n'est pas mémorisée par le
> tableau, redimentionner ce dernier et ajouter le nouveau
> dossier, mettre la variable blnReprise à True pour
> reprendre la recherche.
>
> Une fois la rechercher terminée, on récupére un tableau
> avec chaque sous-dossier du sous-dossier, etc ...
> A partir de là, on peut explorer recursivement chaque
> dossier du tableau pour récuperer les fichiers présents.
>
>
> **********************************************************
> Private Function f_MoveDossier()
> Dim sDossiers(), sDossier As String
> Dim i, j, k, l As Integer
> j = tabMoveDossier(0)
> Dim blnExist, blnReprise As Boolean
>
> blnReprise = False
> For i = 1 To j
> sDossiers = Directory.GetDirectories
> (tabMoveDossier(i))
> For Each sDossier In sDossiers
> blnExist = False
> For k = 1 To j
> If (tabMoveDossier(k) = sDossier) Then
> blnExist = True
> Exit For
> End If
> Next
> If (blnExist = False) Then
> l = tabMoveDossier(0) + 1
> ReDim Preserve tabMoveDossier(l)
> tabMoveDossier(0) = l
> tabMoveDossier(l) = sDossier
> blnReprise = True
> End If
> Next
> Next
> If (blnReprise = True) Then f_MoveDossier()
> End Function
> **********************************************************
>
> Ne pas oublier de reinitialiser le tableau avant de faire
> une nouvelle recherche :
>
> Dim tabReset(1) As String
> tabMoveDossier = tabReset
> tabMoveDossier(0) = 1
> tabMoveDossier(1) = "Path_Dossier_à_Explorer"
>
>
> Voila, c'est surement pas ce qui se fait de mieux, mais
> si quelqu'un a une meilleure solution, je suis preneur.
>
> PS : Si vous pensez à la methode Directory.Move, il faut
> savoir que celle-ci n'est valable que lorsque la source
> et la destination se trouvent sur le même lecteur. Elle
> ne fonctionne pas pour deplacer des fichiers du lecteur
> C: au lecteur D:.
>
> Laurent
Salut à vous! :O)
Il suffit de faire une fonction recursive.. mais c'est presque déjà
tout fait.. ;O)
'***
Imports System.IO
Module Module1
Sub Main()
' On liste les fichiers existants selon nos critères
PrintFilesList("D:DeveloppementGco.OlymSync.Bocenor",
"*.sln", True)
' Permet de voir les résultats avant de quitter..
Console.WriteLine()
Console.WriteLine("Press Enter to quit...")
Console.ReadLine()
End Sub
' Imprime la liste des fichiers trouvées,
' fonctionne de manière récursive si désirée
Private Sub PrintFilesList(ByRef SearchPath As String, ByRef
SearchPattern As String, ByRef IsRecursive As Boolean)
' Conserver la liste des fichiers et des répertoires
' contenus dans le répertoire courant [SearchPath]
'
Dim sFiles() As String = Directory.GetFiles(SearchPath,
SearchPattern)
Dim sFolders() As String = Directory.GetDirectories(SearchPath)
Dim sFile As String
Dim sFolder As String
' Imprime le nom des fichiers trouvés
'
If (sFiles.Length > 0) Then
For Each sFile In sFiles
Console.WriteLine(sFile)
Next
End If
' On rappelle la fonction avec les sous-répertoires
' du répertoire courant si nécessaire..
If (IsRecursive AndAlso sFolders.Length > 0) Then
For Each sFolder In sFolders
PrintFilesList(sFolder, SearchPattern, IsRecursive)
Next
End If
End Sub
End Module
'***
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"Nicolas B." a écrit dans le
message de news:Merci, Laurent.
Je testerai ça demain. C'est quand même bizarre qu'il n'existe pas de
fonction toute faite (comme FileSearch en VBA).
A+
--
Nicolas B.
Laurent B a écrit :Salut,
J'ai eu ce probléme et j'ai été obligé de bidouiller une
fonction, c'est surement pas le meilleur mais ça marche :
1) Declarer un tableau de type string :
Public tabMoveDossier() As String
2) Ensuite remplir le tableau avec 2 valeurs avant
d'appeler la fonction :
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
3) Appeler la fonction
4) LA FONCTION :
Explorer récursivement chaque dossier qui sera mémorisé
dans le tableau et testé si chaque réponse à déjà eté
prise en compte. Si la réponse n'est pas mémorisée par le
tableau, redimentionner ce dernier et ajouter le nouveau
dossier, mettre la variable blnReprise à True pour
reprendre la recherche.
Une fois la rechercher terminée, on récupére un tableau
avec chaque sous-dossier du sous-dossier, etc ...
A partir de là, on peut explorer recursivement chaque
dossier du tableau pour récuperer les fichiers présents.
**********************************************************
Private Function f_MoveDossier()
Dim sDossiers(), sDossier As String
Dim i, j, k, l As Integer
j = tabMoveDossier(0)
Dim blnExist, blnReprise As Boolean
blnReprise = False
For i = 1 To j
sDossiers = Directory.GetDirectories
(tabMoveDossier(i))
For Each sDossier In sDossiers
blnExist = False
For k = 1 To j
If (tabMoveDossier(k) = sDossier) Then
blnExist = True
Exit For
End If
Next
If (blnExist = False) Then
l = tabMoveDossier(0) + 1
ReDim Preserve tabMoveDossier(l)
tabMoveDossier(0) = l
tabMoveDossier(l) = sDossier
blnReprise = True
End If
Next
Next
If (blnReprise = True) Then f_MoveDossier()
End Function
**********************************************************
Ne pas oublier de reinitialiser le tableau avant de faire
une nouvelle recherche :
Dim tabReset(1) As String
tabMoveDossier = tabReset
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
Voila, c'est surement pas ce qui se fait de mieux, mais
si quelqu'un a une meilleure solution, je suis preneur.
PS : Si vous pensez à la methode Directory.Move, il faut
savoir que celle-ci n'est valable que lorsque la source
et la destination se trouvent sur le même lecteur. Elle
ne fonctionne pas pour deplacer des fichiers du lecteur
C: au lecteur D:.
Laurent
Salut à vous! :O)
Il suffit de faire une fonction recursive.. mais c'est presque déjà
tout fait.. ;O)
'***
Imports System.IO
Module Module1
Sub Main()
' On liste les fichiers existants selon nos critères
PrintFilesList("D:DeveloppementGco.OlymSync.Bocenor",
"*.sln", True)
' Permet de voir les résultats avant de quitter..
Console.WriteLine()
Console.WriteLine("Press Enter to quit...")
Console.ReadLine()
End Sub
' Imprime la liste des fichiers trouvées,
' fonctionne de manière récursive si désirée
Private Sub PrintFilesList(ByRef SearchPath As String, ByRef
SearchPattern As String, ByRef IsRecursive As Boolean)
' Conserver la liste des fichiers et des répertoires
' contenus dans le répertoire courant [SearchPath]
'
Dim sFiles() As String = Directory.GetFiles(SearchPath,
SearchPattern)
Dim sFolders() As String = Directory.GetDirectories(SearchPath)
Dim sFile As String
Dim sFolder As String
' Imprime le nom des fichiers trouvés
'
If (sFiles.Length > 0) Then
For Each sFile In sFiles
Console.WriteLine(sFile)
Next
End If
' On rappelle la fonction avec les sous-répertoires
' du répertoire courant si nécessaire..
If (IsRecursive AndAlso sFolders.Length > 0) Then
For Each sFolder In sFolders
PrintFilesList(sFolder, SearchPattern, IsRecursive)
Next
End If
End Sub
End Module
'***
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"Nicolas B." <nicolas.bruot@adresse.bidon.com> a écrit dans le
message de news:uESjtEtYEHA.3128@TK2MSFTNGP09.phx.gbl...
Merci, Laurent.
Je testerai ça demain. C'est quand même bizarre qu'il n'existe pas de
fonction toute faite (comme FileSearch en VBA).
A+
--
Nicolas B.
Laurent B a écrit :
Salut,
J'ai eu ce probléme et j'ai été obligé de bidouiller une
fonction, c'est surement pas le meilleur mais ça marche :
1) Declarer un tableau de type string :
Public tabMoveDossier() As String
2) Ensuite remplir le tableau avec 2 valeurs avant
d'appeler la fonction :
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
3) Appeler la fonction
4) LA FONCTION :
Explorer récursivement chaque dossier qui sera mémorisé
dans le tableau et testé si chaque réponse à déjà eté
prise en compte. Si la réponse n'est pas mémorisée par le
tableau, redimentionner ce dernier et ajouter le nouveau
dossier, mettre la variable blnReprise à True pour
reprendre la recherche.
Une fois la rechercher terminée, on récupére un tableau
avec chaque sous-dossier du sous-dossier, etc ...
A partir de là, on peut explorer recursivement chaque
dossier du tableau pour récuperer les fichiers présents.
**********************************************************
Private Function f_MoveDossier()
Dim sDossiers(), sDossier As String
Dim i, j, k, l As Integer
j = tabMoveDossier(0)
Dim blnExist, blnReprise As Boolean
blnReprise = False
For i = 1 To j
sDossiers = Directory.GetDirectories
(tabMoveDossier(i))
For Each sDossier In sDossiers
blnExist = False
For k = 1 To j
If (tabMoveDossier(k) = sDossier) Then
blnExist = True
Exit For
End If
Next
If (blnExist = False) Then
l = tabMoveDossier(0) + 1
ReDim Preserve tabMoveDossier(l)
tabMoveDossier(0) = l
tabMoveDossier(l) = sDossier
blnReprise = True
End If
Next
Next
If (blnReprise = True) Then f_MoveDossier()
End Function
**********************************************************
Ne pas oublier de reinitialiser le tableau avant de faire
une nouvelle recherche :
Dim tabReset(1) As String
tabMoveDossier = tabReset
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
Voila, c'est surement pas ce qui se fait de mieux, mais
si quelqu'un a une meilleure solution, je suis preneur.
PS : Si vous pensez à la methode Directory.Move, il faut
savoir que celle-ci n'est valable que lorsque la source
et la destination se trouvent sur le même lecteur. Elle
ne fonctionne pas pour deplacer des fichiers du lecteur
C: au lecteur D:.
Laurent
Salut à vous! :O)
Il suffit de faire une fonction recursive.. mais c'est presque déjà
tout fait.. ;O)
'***
Imports System.IO
Module Module1
Sub Main()
' On liste les fichiers existants selon nos critères
PrintFilesList("D:DeveloppementGco.OlymSync.Bocenor",
"*.sln", True)
' Permet de voir les résultats avant de quitter..
Console.WriteLine()
Console.WriteLine("Press Enter to quit...")
Console.ReadLine()
End Sub
' Imprime la liste des fichiers trouvées,
' fonctionne de manière récursive si désirée
Private Sub PrintFilesList(ByRef SearchPath As String, ByRef
SearchPattern As String, ByRef IsRecursive As Boolean)
' Conserver la liste des fichiers et des répertoires
' contenus dans le répertoire courant [SearchPath]
'
Dim sFiles() As String = Directory.GetFiles(SearchPath,
SearchPattern)
Dim sFolders() As String = Directory.GetDirectories(SearchPath)
Dim sFile As String
Dim sFolder As String
' Imprime le nom des fichiers trouvés
'
If (sFiles.Length > 0) Then
For Each sFile In sFiles
Console.WriteLine(sFile)
Next
End If
' On rappelle la fonction avec les sous-répertoires
' du répertoire courant si nécessaire..
If (IsRecursive AndAlso sFolders.Length > 0) Then
For Each sFolder In sFolders
PrintFilesList(sFolder, SearchPattern, IsRecursive)
Next
End If
End Sub
End Module
'***
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"Nicolas B." a écrit dans le
message de news:Merci, Laurent.
Je testerai ça demain. C'est quand même bizarre qu'il n'existe pas de
fonction toute faite (comme FileSearch en VBA).
A+
--
Nicolas B.
Laurent B a écrit :Salut,
J'ai eu ce probléme et j'ai été obligé de bidouiller une
fonction, c'est surement pas le meilleur mais ça marche :
1) Declarer un tableau de type string :
Public tabMoveDossier() As String
2) Ensuite remplir le tableau avec 2 valeurs avant
d'appeler la fonction :
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
3) Appeler la fonction
4) LA FONCTION :
Explorer récursivement chaque dossier qui sera mémorisé
dans le tableau et testé si chaque réponse à déjà eté
prise en compte. Si la réponse n'est pas mémorisée par le
tableau, redimentionner ce dernier et ajouter le nouveau
dossier, mettre la variable blnReprise à True pour
reprendre la recherche.
Une fois la rechercher terminée, on récupére un tableau
avec chaque sous-dossier du sous-dossier, etc ...
A partir de là, on peut explorer recursivement chaque
dossier du tableau pour récuperer les fichiers présents.
**********************************************************
Private Function f_MoveDossier()
Dim sDossiers(), sDossier As String
Dim i, j, k, l As Integer
j = tabMoveDossier(0)
Dim blnExist, blnReprise As Boolean
blnReprise = False
For i = 1 To j
sDossiers = Directory.GetDirectories
(tabMoveDossier(i))
For Each sDossier In sDossiers
blnExist = False
For k = 1 To j
If (tabMoveDossier(k) = sDossier) Then
blnExist = True
Exit For
End If
Next
If (blnExist = False) Then
l = tabMoveDossier(0) + 1
ReDim Preserve tabMoveDossier(l)
tabMoveDossier(0) = l
tabMoveDossier(l) = sDossier
blnReprise = True
End If
Next
Next
If (blnReprise = True) Then f_MoveDossier()
End Function
**********************************************************
Ne pas oublier de reinitialiser le tableau avant de faire
une nouvelle recherche :
Dim tabReset(1) As String
tabMoveDossier = tabReset
tabMoveDossier(0) = 1
tabMoveDossier(1) = "Path_Dossier_à_Explorer"
Voila, c'est surement pas ce qui se fait de mieux, mais
si quelqu'un a une meilleure solution, je suis preneur.
PS : Si vous pensez à la methode Directory.Move, il faut
savoir que celle-ci n'est valable que lorsque la source
et la destination se trouvent sur le même lecteur. Elle
ne fonctionne pas pour deplacer des fichiers du lecteur
C: au lecteur D:.
Laurent