IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Recherche et déplacement de fichiers anciens


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut Recherche et déplacement de fichiers anciens
    Bonjour,

    Je souhaite réaliser un script qui recherche les fichiers qui n'ont pas été modifiés depuis le 01/01/2005, la liste est mise dans un fichier xls.
    Les fichiers trouvés sont ensuite déplacés vers un autre répertoire tout en gardant l'arboressance.


    Je m'explique :
    Je map "c:\temp" en temps que lecteur "j:\"
    Je scan le lecteur "j:\" et enregistre la liste des fichiers trouvés (qui ne sont plus utilisés) dans un fichiers excel.

    exemple de liste récupérée :
    j:\test\fichier.doc
    j:\test\nouveau_test\fichier1.doc
    j:\test\nouveau_test\modèle\fichier2.doc
    etc....
    A chaque ligne enregistrée dans le fichier excel, le fichier trouvé doit être déplacé sur un autre disque (Le but étant de déplacer ces fichiers sur un autre serveur)
    Dans mon exemple, je déplace les fichiers trouvés dans "d:\archives"

    ATTENTION : Le fichier doit être déplacer mais en reconstruisant l'arboressance dans le répertoire de destination et une fois déplacé il ne doit plus se trouver dans "j:\".

    Ca donne à l'arrivée :
    d:\archives\test\fichier.doc
    d:\archives\test\nouveau_test\fichier1.doc
    d:\archives\test\nouveau_test\modèle\fichier2.doc
    etc......
    Au finale, le fichier excel doit être enregistré dans le répertoire mes documents sous le nom : Listes_fichiers.xls

    Voici donc le script que j'ai fais, mais il y a des problème dans le déplacement des fichiers. Je n'arrive pas non plus a reproduire l'arboressancedans le répertoire de destination. Enfin, je n'arrive pas a enregistrer mon document excel dans le répertoire de mon choix avec le nom de mon choix. (Le fichier excel est systématiquementenregistré dans mes documents sous le nom Classeur1.xls)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    'Déclaration des variables
    dim DateSearch, LecteurSearch, Searchshare, strdate
     
     
    'Affectation de valeurs aux variables
    DateSearch = "20050101"
    LecteurSearch = "J:"
    Searchshare = "\\MON_PC\c$\temp"
    strDate = DateSearch & "000000.000000+000"
    strComputer = "."
    i_folder_dest = "d:\archivage\"
     
    'Création des objets
    Set WshNetwork = CreateObject("WScript.Network")
    Set objExcel = CreateObject("Excel.Application")
     
    '########## FONCTION LISTFILES ##########
    Function Listfiles()
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objExcel.ActiveWorkbook.Worksheets.Add
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
    objSheet.Name = "Old transfert Files"
    x = 1
     
    'mappage du lecteur J:\
    WshNetwork.MapNetworkDrive LecteurSearch,Searchshare
     
    'Recherche
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
    	("Select * From CIM_DataFile Where Lastaccessed < '" & strDate & "'" & _
    	 " AND Drive = '" & LecteurSearch & "'")
    For Each objFile in colFiles
    	objExcel.Cells(x, 1) =  objfile.name
    	objFSO.MoveFile "objfile.name", i_folder_dest & "\",false
    	x = x + 1
    Next
    End Function
     
     
     
    '########## PROGRAMME PRINCIPALE ##########
     
    'Ouverture du fichier Excel
    objExcel.Visible = True
    Set objWorkbook = objExcel.Workbooks.Add
    Listfiles 'Lancement de la fonction Listfiles
    objWorkbook.Save()  'Enregistrement du classeur Excel en local dans Mes Documents\classeur1.xls
    objExcel.Quit
     
    'demappage du lecteur J:\
    WshNetwork.RemoveNetworkDrive "J:"
     
     
    'Désactivation des abjets
    Set objExcel = nothing
    Set WshNetwork = nothing
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    Je n'arrive pas non plus a reproduire l'arboressancedans le répertoire de destination
    avec une variable i_folder_dest toujours identique, le contraire tiendrait du miracle...

    remplacer (de mémoire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFSO.MoveFile "objfile.name", i_folder_dest & "\",false
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFSO.MoveFile objfile.name, Replace(objfile.Path,"j:","d:\archives",1,1) & "\"
    je n'arrive pas a enregistrer mon document excel dans le répertoire de mon choix avec le nom de mon choix
    remplacer:
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objWorkbook.SaveAs("C:\Mes documents\Listes_fichiers.xls")
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Merci pour cette réponse.

    Le "Saveas" pour le fichier excel ... puff j'aurais du y pensé... impardonnable.


    Pour ce qui est de l'arborescence, oui dans mon exemple je mettais les fichiers dans le même répertoire sans récupérer le chemin car je ne savais pas comment faire.
    Je testerais ta solution demain.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Bon j'ai testé ta solution et j'obtiens l'erreur suivante :

    Ligne : 50
    Caract. : 2
    Erreur : Chemin d'accés introuvable
    Code : 800A004C
    Source : Erreur d'exécution VBScript
    La ligne 50 correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFSO.MoveFile objfile.name, Replace(objfile.Path,"j:","d:\archives",1,1) & "\"
    Si j'observe au momment de l'erreur, j'ai bien mon "j:" qui est mappé et le "d:\archive" existe bien.

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    ajoute à la ligne précédente (ligne 49):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox objfile.name & vbcrlf & Replace(objfile.Path,"j:","d:\archives",1,1) & "\"
    et dis-moi ce que tu vois
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    j'obtiens

    j:\test\test1\image.gif
    \test\test1\\

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    j'avais lu en diagonale ton code et oublié la syntaxe complète de Replace()
    ta collection colFiles, comme son nom ne l'indique pas, n'est pas une collection d'objets File mais de SWbemObject
    cette ligne devrait peut-être faire l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFSO.MoveFile objfile.Name, "d:\archives" & objfile.Path
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFSO.MoveFile objfile.Name, "d:\archives" & objfile.Path
    La commande fonctionne à condition que je crée les répertoires objfile.Path à la main dans d:\archives
    Il faudrait maintenant rajouter une ligne qui crée l'arboressance si celle-ci n'existe pas avant de déplacer le fichier par la commande MoveFile.

    Le programme est presque fini et fonctionnel, si tu peux encore m'aider la dessus.
    Merci d'avance

  9. #9
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    si tu peux encore m'aider la dessus
    tu veux dire faire ton boulot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On Error Resume Next
    objFSO.CreateFolder "d:\archives" & objfile.Path
    objFSO.MoveFile objfile.Name, "d:\archives" & objfile.Path
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    tu veux dire faire ton boulot
    Faut pas pousser, j'ai juste demander de l'aide pour 2 lignes de code la dessus . Mais bon je ne suis pas un développeur.

    Sinon pour ta proposition j'ai déjà essayer. Le objfile.Path peut contenir une série de sous répertoire et la CreateFolder crée le répertoire si il n'y en a qu'un.

    Il faudrait faire un truc du type
    découpe de objfile.Path par l'objet de séparation \ puis pour chaque valeur récupéré faire un CreateFolder
    Exemple :
    j:\test\test1\fichier.txt
    je découpe le path => ça donne 2 valeurs => "test et test1"
    je fais une boucle pour chaque valeur récupéré => CreateFolder
    déplacement dans le "test" puis création du 2ème répertoire "test1" avec CreateFolder
    En gros se serait sous unix, faudrait un "awk" et récupérer les variables par $1, $2 etc ... mais on est pas sous unix d'ou ma difficultée

    Je vais plancher sur ce que je viens de dire, merci pour ton aide.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    Je crois que pour faire ce que je viens de dire, il faut utiliser Split

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche récursive + déplacement fichiers .pst
    Par AbunaE dans le forum VBScript
    Réponses: 9
    Dernier message: 31/03/2011, 16h13
  2. Réponses: 3
    Dernier message: 11/06/2009, 17h49
  3. [FPDF] Recherche chaine caractères dans fichier pdf
    Par licorne dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/10/2005, 11h55
  4. Recherche sur tous les fichiers d'un projet
    Par Kaorichan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/04/2005, 11h28
  5. Réponses: 16
    Dernier message: 25/11/2004, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo