Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1091 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recherche de fichier, copie à l'aide d'une liste

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recherche de fichier, copie à l'aide d'une liste

n°1689913
stevenhab
Posté le 21-02-2008 à 10:06:52  profilanswer
 

Bonjour à tous et à toutes !
 
J'ai vraiment besoin de votre aide. :??:  
 
Je m'explique, je cherche a écrire un script qui à l'aide d'un liste d'id (dans un fichier .txt , ex : 10456,12588...) va rechercher un fichier .doc contenant cet id, ce fichier existe mais il se trouve dans un dossier parmi 4 autres (ce qui nous fais plusieurs sous dossiers).
 
L'idée serait de dire, pour chaque id du fichier aller chercher le fichier correspondant et le copier/coller ailleurs.
Il faudrait également lui dire dans quel fichier racine chercher.
 
 
 
Si quelqu'un sait comment faire  :sweat:
 
 
voici quelque precision, je ne m'en sort pas, mon patron me met la pression alors que je ne suis qu'un petit stagiaire :s HELP PLEASE !
 
 
Voici ma liste d'id, je ne traite que les id > 6000 :  
1015
1165
9019
9032
9202
6831
6060
6831
 
et je cherche dans cette architechture, là commence les pbs :s
├───Txt courants
│   ├───01_MC Originaux
│   │   ├───MC 1000-1999
│   │   │   └───ouvrages_2001-2005
│   │   └───MC 9000-9999
│   │       ├───Mc_9159
│   │       └───MC_9202
│   ├───02_MC En cours
│   └───03_MC Traités
│       ├───MC 2000-2999
│       │   ├───MC_2888
│       │   │   └───archives
│       │   └───MC_2891
│       └───MC 6000-6999
│           ├───MC_6689
│           └───MC_6831
│               └───ouvrage_6831 ancienne version
├───Txt Institutions
│   ├───01_MI Originaux
│   │   └───MI 10000-10999
│   │       └───MI_10789
│   ├───02_MI En cours
│   └───03_MI Traités
│       ├───MI 10001-10099
│       │   ├───MI_10789
│       │   │   └───PDf_divers
│       │   └───MI_10848
│       │       └───Archives
│       └───MI 4000-4999
│           ├───Mi_4445
│           │   └───Couv_4445
│           └───MI_4713
├───Txt ONG-Associations
│   ├───01_MO Originaux
│   │   ├───MO 0-999
│   │   ├───MO 1000-1999
│   │   ├───MO 10000-10999
│   │   │   └───MO_10776
│   │   ├───MO 11000-11999
│   │   ├───MO 2000-2999
│   │   ├───MO 3000-3999
│   │   │   └───ISBN-MU ID
│   │   ├───MO 4000-4999
│   │   ├───MO 5000-5999
│   │   ├───MO 6000-6999
│   │   └───MO 7000-7999
│   ├───02_MO En cours
│   │   ├───MO 0-999
│   │   │   └───MO_ID
│   │   ├───MO 1000-1999
│   │   ├───MO 10000-
│   │   ├───MO 11000-11999
│   │   ├───MO 2000-2999
│   │   ├───MO 3000-3999
│   │   │   └───ISBN-MU ID
│   │   ├───MO 4000-4999
│   │   ├───MO 5000-5999
│   │   ├───MO 6000-6999
│   │   ├───MO 7000-7999
│   │   └───MO 9000-9999
│   └───03_MO Traités
│       ├───MO 10001-10999
│       │   ├───MO_10775
│       │   └───MO_10776
│       └───MO 9000-9999
│           └───MO_9650
│               └───archives
└───Txt Universitaires
    ├───01_MU Originaux
    │   ├───MU 5000-5999
    │   └───Mu_7883
    ├───02_MU En cours
    └───03_MU Traités
        └───MU 8000-8999
            ├───MU_8118
            └───MU_8298
 
 
voici mon code à ce jour :

Code :
  1. On Error Resume next
  2. racine= "C:\Fonction routage\"
  3. Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
  4.  
  5. 'on instance le fichier texte
  6. Set Ftxt = FSO.OpenTextFile(racine &"id.txt" )
  7. 'on instance le dossie racine
  8. Set Afolder=FSO.GetFolder(racine)
  9. 'on parcour le fichier texte contenant les ID
  10. Do While Not Ftxt.AtEndOfStream
  11.    id = Ftxt.ReadLine
  12.    WScript.Echo id  
  13.     copie(Afolder)
  14. Loop
  15. Ftxt.Close 'on ferme le fichier texte
  16.  
  17. function copie(rep)
  18. Set FSO = CreateObject("Scripting.FileSystemObject" )
  19. Set TheFiles = rep.Files
  20.     For Each AFile In TheFiles
  21.         'trouve le fichier et le copie ailleur        
  22.      Set objFSO = CreateObject("Scripting.FileSystemObject" )
  23.      If id > 6000 Then
  24.          objFSO.CopyFile "MC_" & id & "\Ouvrage_" & id & ".doc" , "C:\Fonction routage\test\"
  25.      Else
  26.          MsgBox "Ouvrage à copier manuellement : " & id , vbExclamation
  27.      End If
  28.      Set objFSO = Nothing
  29.          
  30.         For Each subFolder In rep.SubFolders
  31.             copie(subFolder)
  32.         Next
  33.     Next    
  34. End function


 
 
Merci a vous..


Message édité par stevenhab le 22-02-2008 à 16:42:03

---------------
-- Steven
mood
Publicité
Posté le 21-02-2008 à 10:06:52  profilanswer
 

n°1689921
Elmoricq
Modérateur
Posté le 21-02-2008 à 10:18:01  profilanswer
 

Tu parles de .doc, c'est en batch DOS ?

n°1689926
stevenhab
Posté le 21-02-2008 à 10:21:47  profilanswer
 

merci de ta réponse, j'étais parti sur du vbs mais pourquoi pas en batch dos si c'est plus simple, je parle de .doc car les fichiers recherchés sont en .doc

n°1689934
Elmoricq
Modérateur
Posté le 21-02-2008 à 10:31:10  profilanswer
 

Non non, VBS c'est mieux au contraire, c'est juste que dans shell/batch ça peut être plein de choses différentes, c'est mieux de préciser. [:romf]
Je t'ai rangé ton sujet dans la bonne catégorie, tu auras plus de chances de recevoir une réponse comme ça.


Message édité par Elmoricq le 21-02-2008 à 10:31:49
n°1689946
tegu
Posté le 21-02-2008 à 10:44:06  profilanswer
 

Ton problème peut être décomposé en sous-problèmes
1/ lecture d'un fichier texte pour les id
2/ recherche récursive de fichiers dans des dossiers
3/ copier les fichiers identifiés
 
Je pense que tous ces aspects là ont déjà été abordés de nombreuses fois sur ce forum.

n°1689949
stevenhab
Posté le 21-02-2008 à 10:46:32  profilanswer
 

Oui, merci j'avais déjà identifié ces points là..
 
Je ne m'en sort tout de même pas.

n°1689994
stevenhab
Posté le 21-02-2008 à 11:29:01  profilanswer
 

j'acance un peu..
 
racine= "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
Set Afolder=FSO.GetFolder(racine)
copie(Afolder)
 
function copie(rep)
Set TheFiles = rep.Files
For Each AFile In TheFiles
 If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then  
  AFile.Copy "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test" , true
 next
 for each subFolder in rep.SubFolders
  copie (subFolder)
11. next
end function  
 
mais j'ai une erreur ligne 11 Next non attendu .

n°1690003
Paul Hood
Posté le 21-02-2008 à 11:49:56  profilanswer
 

pour fermer le if un end c'est mieux !

n°1690004
stevenhab
Posté le 21-02-2008 à 11:58:35  profilanswer
 

racine= "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
Set Afolder=FSO.GetFolder(racine)
copie(Afolder)
 
function copie(rep)
Set TheFiles = rep.Files
 For Each AFile In TheFiles
  If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then  
   AFile.Copy "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test" , true
  End if
  For Each subFolder In rep.SubFolders
   copie(subFolder)
  Next ****
end function  
 
 
voila, mais je ne sais pas quoi mettre a la place des étoiles, il attend un argument..

n°1690011
Paul Hood
Posté le 21-02-2008 à 12:05:41  profilanswer
 

En fait tu as 2 for donc tu dois avoir 2 next !

mood
Publicité
Posté le 21-02-2008 à 12:05:41  profilanswer
 

n°1690014
stevenhab
Posté le 21-02-2008 à 12:08:21  profilanswer
 

yes bien vu l'aveugle :p !!
 
mais ca ne copie rien :s avec AFile.Delete ca supprimer correctement mais la copy non..

n°1690023
stevenhab
Posté le 21-02-2008 à 12:26:31  profilanswer
 

voici le code :  
 
racine= "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
Set Afolder=FSO.GetFolder(racine)
copie(Afolder)
 
function copie(rep)
Set TheFiles = rep.Files
 For Each AFile In TheFiles
  If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then  
   AFile.Copy "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test"  
  End if
  For Each subFolder In rep.SubFolders
   copie(subFolder)
  Next
 Next  
End function  
 
la copie de fichier .doc ne s'effectue pas :s

n°1690024
babasss
Posté le 21-02-2008 à 12:30:19  profilanswer
 

Afin d'avoir une meilleur lisibilité de tes posts, il serait judicieux que tu encadre ton code des balises [ code=vb ] et [ /code ] (en enlevant tous les espaces)


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1690057
stevenhab
Posté le 21-02-2008 à 12:57:12  profilanswer
 

je remet le code avec les bonne balise :$
 

Code :
  1. racine= "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage"
  2. Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
  3. Set Afolder=FSO.GetFolder(racine)
  4. copie(Afolder)
  5.  
  6. function copie(rep)
  7. Set TheFiles = rep.Files
  8. For Each AFile In TheFiles
  9.  If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then  
  10.   AFile.Copy "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test" , True
  11.  End if
  12.  For Each subFolder In rep.SubFolders
  13.   copie(subFolder)
  14.  Next
  15. Next  
  16. End function

n°1690058
olivthill
Posté le 21-02-2008 à 13:04:34  profilanswer
 

Copy ? Je connais CopyFile qui s'utilise de la manière suivante :

object.CopyFile source, destination[, overwrite]

Edit : l'objet est le FSO naturellement.Par exemple :

FSO.CopyFile  AFile.path "C:\Documents and Settings\administrateur.MANUSCRIT\Bureau\Fonction routage\test"


Message édité par olivthill le 21-02-2008 à 13:10:12
n°1690059
Elmoricq
Modérateur
Posté le 21-02-2008 à 13:23:02  profilanswer
 

Les sujets suivont ont étés fusionnés à ce sujet par Elmoricq

  • Probléme de copie de fichier

n°1690060
Elmoricq
Modérateur
Posté le 21-02-2008 à 13:24:32  profilanswer
 

stevenhab > Pour modifier l'un de tes sujets, il te faut cliquer sur l'icone http://forum-images.hardware.fr/themes_static/images/silk/edit.gif

 

Essaie de ne pas recréer des topics à chaque fois, depuis ce matin je repasse derrière toi pour faire le ménage...
Si tu te sens perdu avec le forum, n'hésite pas à en consulter l'aide : http://www.mesdiscussions.net/doc/user/html/


Message édité par Elmoricq le 21-02-2008 à 13:24:59
n°1690172
stevenhab
Posté le 21-02-2008 à 14:50:40  profilanswer
 

merci olivthill pour ta réponse mais je n'arrive pas a appliquer ton 2eme morceau de code..

n°1690177
stevenhab
Posté le 21-02-2008 à 15:00:35  profilanswer
 

donc je n'y arrive toujours pas, je n'arrive pas a copier mes fichier .doc
 

Code :
  1. racine= "C:\Fonction routage\"
  2. Set FSO = WScript.CreateObject("Scripting.FileSystemObject" )
  3. Set Afolder=FSO.GetFolder(racine)
  4. copie(Afolder)
  5.  
  6. function copie(rep)
  7. Set TheFiles = rep.Files
  8.     For Each AFile In TheFiles
  9.         If UCase(FSO.GetExtensionName(AFile.Path)) = "DOC" then
  10. AFile.CopyFile  "C:\Fonction routage\test" **** ici doit se faire la copie mais je n'y arrive pas.
  11.         End if
  12.         For Each subFolder In rep.SubFolders
  13.             copie(subFolder)
  14.         Next
  15.     Next    
  16. End function

n°1690274
stevenhab
Posté le 21-02-2008 à 17:10:43  profilanswer
 

svp aidez moi :$

n°1690320
tegu
Posté le 21-02-2008 à 18:34:21  profilanswer
 

Voici un peu de doc sur le FileSystemObject
http://msdn2.microsoft.com/en-us/l [...] S.85).aspx
.Copy et .CopyFile peuvent être utilisés, mais avec une syntaxe et dans des contextes différents.
À toi de choisir celui qui te convient.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recherche de fichier, copie à l'aide d'une liste

 

Sujets relatifs
AIDE URGENT !Probleme VBA - Deux listes Combobox
[mysql] Aide pour l'activationExapmle de creation de fichier JNI
Envois de mails avec fichier(s) attache(s)Perl XSL, ne trouve pas le fichier xsl
Lecture fichier csvMoteur de recherche dans BDD MySQL
aide pour LD_LIBRARY_PATHAide fonction formattage tag Dailymotion / Youtubebib
Plus de sujets relatifs à : Recherche de fichier, copie à l'aide d'une liste


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR