Rechercher un fichier sur plusieurs lecteurs et le recopier si trouve sur un rep

Résolu
cs_stef79 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 2 avril 2009 - 1 avril 2009 à 17:03
cs_stef79 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 2 avril 2009 - 2 avril 2009 à 15:48
Bonjour les développeurs, je recherche un code ou au moins quelque chose s'approchant de mon besoin.

Je souhaite après avoir renseigné une combox ( mon fichier "toto.bak")
rechercher à travers plusieurs lecteurs (de c:\ à z:\)
si mon fichier existe sur ces lecteurs et dans les différents répertoires présents sur ces lecteurs.

suite à cela, si mon fichier existe, je souhaite le recopier dans un répertoire déterminé
( h:\temporaire)
si il n'existe pas, afficher "fichier non trouvé"

pouvez vous m'aider s'il vous plait.

STEF79

4 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
1 avril 2009 à 20:17
Bonjour,

La chose est certes possible, mais :
1) selon la capacité de stockage de ta machine (de chacun des volumes), tu risques fort de trouver le temps plutôt long (à peu près la même durée que celle à partir de "rechercher" depuis l'explorateur !!!
2) "recopîer" si trouvé ? Ben ...oui, mais : quid s'il en trouve plusieurs, avec le même nom, dans des volumes et/ou répertoires distincts ?

Ta demande est assez curieuse.
Dans quelles circonstances et pourquoi cherches-tu à faire çà ?
3
cs_stef79 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 2 avril 2009
2 avril 2009 à 08:46
Bonjour jmf0,
merci pour ta réponse,
je cherche à faire cela car je me suis rendu compte que certains fichiers disparaissaient de temps en temps de mon répertoire de stockage.
je souhaiterais donc que lorsqu'une personne a besoin d'un fichier, qu'elle renseigne un champ avec le nom souhaité.
lorsque ce fichier est trouvé, le mettre sur un répertoire de travail et garder une copie de l'original à l'endroit initial.
pour info:
(un seul lecteur - 15 répertoires avec sous certains 40 sous répertoires)
les fichiers dans le répertoire de stockage sont en lecture seule.
seuls les noms "toto.extension" seront admis et transférables, et il n'existe qu'un seul nom identique (garanti).
certaines personnes ne savent pas se servir de l'explorateur windows et la seule souris qu'ils connaissent c'est Mickey. bonjour le malaise.
c'est pour cela qu'un petit programme serait le bienvenu.

 

STEF79
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
2 avril 2009 à 08:59
ceci te permet de trouver un fichier dans une arborescence :
Private Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As Long
Private Const MAX_PATH = 260



Private Sub Command1_Click()
 Dim repertoire As String, fichier As String
 repertoire = "d:\monoutil"
 fichier = "essai.txt"
 MsgBox trouve(repertoire, fichier)
End Sub




Private Function trouve(R As String, F As String) As String
  Dim T As String, resu As Long
  T = String(MAX_PATH, 0)
  resu = SearchTreeForFile(R, F, T)
  If resu <> 0 Then
    trouve = Left$(T, InStr(1, T, Chr$(0)) - 1): Exit Function
  End If
End Function





Si tu n'as qu'un seul lecteur, tu donnes ce lecteur comme départ (repertoire = "c:", par exemple).
Tu as ainsi dans trouve, le chemin complet du fichier en cause...
A toi de le copier où tu veux (s'il est copiable, hein ...) ... et çà, quand même, je pense que tu sais le faire !
0
cs_stef79 Messages postés 3 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 2 avril 2009
2 avril 2009 à 15:48
merci jmf0 suis en train de développer la suite

STEF79
0
Rejoignez-nous