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 :

Gestion des doublons


Sujet :

VBScript

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut Gestion des doublons
    Bonjour,

    Je dois analyser l'espace disque d'un serveur de fichier dans toute son arborescence.
    J'ai un script qui me liste tous les dossiers et fichiers et qui me l'envoi dans un fichier texte.
    J'ai un autre script qui me supprime les doublons à partir de ce premier fichier texte.
    Par contre ce qui m'intéresse ce n'est pas de supprimer les doublons mais de les envoyer dans un fichier texte pour pouvoir les traiter ensuite pour voir tous les fichiers qui pourraient être supprimés.

    Ma question porte en fait sur le moyen de récupérer ces doublons. Quelle solution serait le plus facile en vbscript :
    Parcourir les 2 fichiers texte générés et mettre la différence dans un 3ème.
    Filtrer les doublons directement à partir du premier fichier généré.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 841
    Par défaut

    Postez vos codes et

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Script Analyse disque
    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
    Dim fso		'File Systeme Object
    Dim f		'Fichier texte
    Dim size, dcrea, dlac, fold	'Paramètres d'affichage
     
    Const ForAppending = 8
     
    'Nom du fichier texte créé pour enregistrement des données 
    	Dim stFile
     
    'Définition du fichier texte créé pour enregistrement des données
    	stFile = "D:\Analyse.txt"
     
    'Ouverture du fichier texte en mode ajout"
    	Set fso = CreateObject("Scripting.FileSystemObject")
    	Set f = fso.OpenTextFile(stFile,ForAppending,true)
     
     
    Sub ListDirectory(objFolder)
     
    On error resume next
     
      For Each objFile In  objFolder.Files
     
    		fold = "	" & objFile.name
    		size = "	" & objFile.size/1073741824 	'Conversion en Mo
    		dcre = "	" & objFile.DateCreated     	'Date création
    		dlac = "	" & objFile.DateLastAccessed  	'Date dernier accès
    		f.Write(fold)
    		f.write(size) 
    		f.write(dcre)
    		f.write(dlac) & vbCrLf
      Next
     
      For Each objSubFolder In objFolder.SubFolders
     
        		fold = "	" & objSubFolder.name
    		size = "	" & objSubFolder.size/1073741824 	'Conversion en Mo
    		dcre = "	" & objSubFolder.DateCreated     	'Date création
    		dlac = "	" & objSubFolder.DateLastAccessed  	'Date dernier accès
    		f.Write(fold)
    		f.write(size) 
    		f.write(dcre)
    		f.write(dlac) & vbCrLf
     
    	ListDirectory(objSubFolder )
      Next
     
    End Sub
     
    'Définition du dossier à analyser
    	Set objFso = CreateObject("Scripting.FileSystemObject")
    	Set objMyFolder = objFso.GetFolder("\\Server\Dossier")
    	ListDirectory objMyFolder
    Script Suppression doublons
    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
    Const ForReading = 1
    Const ForWriting = 2
    Const ForAppending = 8
     
    Set objDictionary = CreateObject("Scripting.Dictionary")
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("D:\Analyse.txt", ForReading)
     
    Do Until objFile.AtEndOfStream
    strName = objFile.ReadLine
    If Not objDictionary.Exists(strName) Then
    objDictionary.Add strName, strName
    End If
    Loop
     
    objFile.Close
     
    'Définition du fichier texte créé pour enregistrement des données
    	stFile = "D:\AnalyseSansDoublon.txt"
     
    'Ouverture du fichier texte en mode ajout"
    	Set objFile = objFSO.OpenTextFile(stFile,ForAppending,true)
     
    For Each strKey in objDictionary.Keys
    objFile.WriteLine strKey
    Next
     
    objFile.Close

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 841
    Par défaut

    J'ai consulté ce lien : How Can I List All the Duplicate Files in a Folder and Its Subfolders?
    Donc je l'ai modifié un peu pour donner quelque chose comme ceci :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Titre = "Lister tous les fichiers en double dans un dossier et ses sous-dossiers"
    Set objDictionary = CreateObject("Scripting.Dictionary")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set Ws = CreateObject("Wscript.Shell")
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(0,Titre,1,"c:\Programs")
    If objFolder Is Nothing Then
            WScript.Quit
    End If
     
    NomDossier = objFolder.Title
    CheminDossier = objFolder.self.path
     
    Const ForWriting = 2 
        Dim stFile
        stFile = "AnalyseDoublons.txt"
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set f = fso.OpenTextFile(stFile,ForWriting,true)
    Set objFolder = objFSO.GetFolder(CheminDossier)
     
    Set colFiles = objFolder.Files
     
    For Each objFile in colFiles
        strName = objFile.Name
        strPath = objFile.Path
     
        If Not objDictionary.Exists(strName) Then
            objDictionary.Add strName,strPath  
        Else
            objDictionary.Item(strName) = objDictionary.Item(strName) & ";" & strPath
        End If
    Next
     
    ShowSubfolders objFSO.GetFolder(CheminDossier)
    ws.run stFile
     
    For Each strKey in objDictionary.Keys
        strFileName = strKey
        If InStr(objDictionary.Item(strFileName), ";") Then
            arrPaths = Split(objDictionary.Item(strFileName), ";")
            For Each strFilePath in arrPaths
                f.WriteLine strFilePath 
            Next
            f.WriteLine String(100,"*")
        End If
    Next
     
    f.WriteLine VbNewLine & "Liste des fichiers en double sur " & objDictionary.Count & " fichiers Total Scannés dans le dossier " & CheminDossier
     
    Sub ShowSubFolders(Folder)
        For Each Subfolder in Folder.SubFolders
            Set objFolder = objFSO.GetFolder(Subfolder.Path)
            Set colFiles = objFolder.Files
     
        For Each objFile in colFiles
            strName = objFile.Name
            strPath = objFile.Path
            On Error Resume Next
            If Err <> 0 Then MsgBox Err.Number & Err.Description,16,Err.Number & Err.Description
            Err.Clear
            If Not objDictionary.Exists(strName) Then
                objDictionary.Add strName, strPath  
            Else
                objDictionary.Item(strName) = objDictionary.Item(strName) & ";" & strPath
            End If
        Next
            ShowSubFolders Subfolder
        Next
    End Sub

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Merci Hackoofr ,

    Je l'ai lancé sur un dossier test et dans l'idée, c'est tout à fait ce que je recherche.
    Reste à le déchiffrer pour l'adapter à ce que je souhaite faire avec.


Discussions similaires

  1. Gestion des doublons
    Par Arsene12 dans le forum WinDev
    Réponses: 2
    Dernier message: 04/12/2007, 18h21
  2. Requete SQL sous Access : gestion des doublons
    Par mcroz dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 27/02/2007, 16h37
  3. Gestion des doublons
    Par bestall666 dans le forum Access
    Réponses: 9
    Dernier message: 19/02/2007, 16h15
  4. Gestion des doublons et dlookup
    Par bestall666 dans le forum Access
    Réponses: 5
    Dernier message: 14/02/2007, 23h01

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