Tatiak

Excel, Guitare, New- Beetle, ... et netbook ...

29 novembre 2008

Synchronisation Dossiers et Sous-Dossier - VBScript

Avant propos : Et non ce n'est pas du VBA pour Excel, mais du VBS qui "marche tout seul" ;)

Pour faire suite à mon post précédent, et pour aller plus loin dans les contraintes, voici la version suivante du script de synchronisation. En effet, le point "faible" du script précédent est qu'il ne traitait pas les sous-répertoires du dossier choisi.
Voici donc un outil plus complet, capable de traiter les fichiers, les sous répertoires et les fichiers des sous répertoires d'un dossier quelconque à choisir.

Téléchargement de : Synchronisation_DOSSIERS.zip

Dans le code, vous remarquerez 2 fonctions qui sont le "moteur" de l'outil. Une première liste les fichiers du dossier "source" :
Function ListerDossier(Chemin)
Dim Fso, SousRepertoire, SousFichier, SousFichierItem
    if right(Chemin, 1) <> "\" then Chemin = Chemin & "\"
    On Error Resume Next
    Set Fso = CreateObject("Scripting.FileSystemObject")
    For Each SousRepertoire In Fso.GetFolder(Chemin).SubFolders
        ListerDossier SousRepertoire.Path
    Next
    For Each SousFichier In Fso.GetFolder(Chemin).Files
        Set SousFichierItem = Fso.GetFile(SousFichier)
        nbfichiers = nbfichiers +1
        ReDim Preserve Tableau(3, nbfichiers)
        Tableau(1, nbfichiers) = replace (Chemin, Chemin1 , "")
        Tableau(2, nbfichiers) = SousFichier.Name
        Tableau(3, nbfichiers) = SousFichierItem.DateLastModified
    next
End Function

L'autre fonction liste le contenu du dossier "cible" et effectue le traitement de copie et de mise à jour du contenu de la "source" et de la "cible" :
Function ComparerFichier(Chemin)
Dim Fso, SousRepertoire, SousFichier, SousFichierItem
    if right(Chemin, 1) <> "\" then Chemin = Chemin & "\"
    On Error Resume Next
    Set Fso = CreateObject("Scripting.FileSystemObject")
    For Each SousRepertoire In Fso.GetFolder(Chemin).SubFolders   
        if not Fso.FolderExists(Chemin1 & sousrepertoire.name) then Fso.CreateFolder (Chemin1 & sousrepertoire.name)       
        ComparerFichier SousRepertoire.Path
    Next
    for i = 1 to nbfichiers
        For Each SousFichier In Fso.GetFolder(Chemin).Files
            Set SousFichierItem = Fso.GetFile(SousFichier)   
            if not Fso.FileExists(Chemin1 & replace(Chemin, Chemin2, "") & SousFichier.name) then
                Fso.CopyFile Chemin & SousFichier.Name ,  Chemin1 & replace(Chemin, Chemin2, ""), true   
            end if
            if tableau(1,i) = replace(Chemin, Chemin2, "") and tableau(2,i) = SousFichier.name then
                If CDate(tableau(3,i)) > CDate(SousFichierItem.DateLastModified) Then
                    Fso.CopyFile Chemin1 & replace(Chemin, Chemin2, "") & tableau(2,i) ,  Chemin2 & replace(Chemin, Chemin2, ""), true
                else
                    Fso.CopyFile Chemin2 & replace(Chemin, Chemin2, "") & tableau(2,i) ,  Chemin1 & tableau(1,i) , true
                end if
            end if
        next
        if  not Fso.FileExists(Chemin2 & tableau(1,i) & tableau(2,i)) then
            Fso.CopyFile Chemin1 & tableau(1,i) & tableau(2,i) ,  Chemin2 & tableau(1,i), true
        end if
    next
End Function

Voilà tout, n'hésitez pas à me faire part de vos remarques si vous trouvez un bug!
:) tatiak

Posté par tatiak à 12:20 - Excel - Commentaires [6] - Rétroliens [0] - Permalien [#]


23 novembre 2008

Synchronisation de dossiers - en VBScript

Bonjour à mes amis lecteurs!
Ma préoccupation du jour est la synchronisation de mes fichiers répartis dans divers dossiers placés sur divers supports (disque dur, clé USB, SdCard de sauvegarde, ...). Ma recherche d'un outil simple de synchronisation n'étant pas concluante, je vous propose ici un utilitaire écrit en VBScript. Simplex peut être, mais il fait le job.
Pour utiliser ces lignes de code, rien de plus simple : copier et coller dans le "Bloc-notes" de Windows, enregistrer le fichier sous un nom le plus explicite pour vous en ajoutant l'extention : .vbs
C'est tout : pour lancer l'utilitaire, vous double-cliquerez dessus, il vous sera demander de choisir un  dossier source et un dossier cible, et le script fait le reste!
(la règle de synchro est ici : priorité au fichier le plus récent, et si un fichier n'existe pas dans un des 2 dossiers, il  est copié dans l'autre)
Bonne synchro
:) tatiak

option explicit

Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0

Dim Chemin1, Chemin2
Dim fso, Fichier, FichierItem
Dim NomCible, DateCible
Dim nbfichiers, i

    Chemin1 =  SelectionDossier("Veuiller sélectionner un dossier SOURCE","" )
    if not Chemin1 = "ANNULATION"  then
        Chemin2 =  SelectionDossier("Veuiller sélectionner un dossier CIBLE","" )
        if not Chemin2 = "ANNULATION" then

            on error resume next
            Set fso = CreateObject("Scripting.FileSystemObject")
            nbfichiers = 0   
            For Each Fichier In fso.GetFolder(Chemin1).Files
                Set FichierItem = fso.GetFile(Fichier)
                nbfichiers = nbfichiers + 1
                ReDim Preserve Tableau(2, nbfichiers)
                Tableau(1, nbfichiers) = Fichier.Name
                Tableau(2, nbfichiers) = FichierItem.DateLastModified
            next

            for i = 1 to nbfichiers
                NomCible = tableau(1,i)
                DateCible= tableau(2,i)
                For Each Fichier In fso.GetFolder(Chemin2).Files
                    Set FichierItem = fso.GetFile(Fichier)   
                    if not fso.FileExists(Chemin1 & Fichier.name) then
                        fso.CopyFile Chemin2 & Fichier.Name ,  Chemin1, true
                    end if            
                    if Nomcible =Fichier.name then
                        If CDate(DateCible) > CDate(FichierItem.DateLastModified) Then
                            fso.CopyFile Chemin1 & NomCible ,  Chemin2, true
                        else
                            fso.CopyFile Chemin2 & NomCible ,  Chemin1, true
                        end if
                    end if
                next
                if not fso.FileExists(Chemin2 & Nomcible) then
                    fso.CopyFile Chemin1 & NomCible ,  Chemin2, true
                end if
            next

            msgbox "Synchronisation OK! : " & vbCRLF & "Source = " & chemin1 & vbCRLF _
             & "Cible    = " & chemin2, vbInformation, "Synchronisation dossiers"
        end if
    end if

Function SelectionDossier (message,directory)
Dim objShell, objFolder, objFolderItem
    Set objShell = CreateObject("Shell.Application" )
    Set objFolder = objShell.BrowseForFolder (WINDOW_HANDLE, message , NO_OPTIONS, directory)
    On Error Resume Next
    Set objFolderItem = objFolder.Self
    If Err <> 0 Then
        SelectionDossier = "ANNULATION"
    Else
        SelectionDossier = objFolderItem.Path & "\"
    end if
    On Error GoTo 0
    set objShell = nothing
    set objFolder = nothing
    set objFolderItem = nothing
End Function

Téléchargement de Synchronisation_Fichiers.zip


Edit de décembre : Je vous conseille vivement la lecture du : post suivant! :)

Posté par tatiak à 16:45 - Excel - Commentaires [0] - Rétroliens [0] - Permalien [#]

17 novembre 2008

Patience!

Afin d'optimiser son ordi préféré, un "nettoyage" est parfois nécessaire.
Réorganisation des fichiers, vidage de la corbeille, nettoyage de la base de registre, etc ... et hop vous voici avec un Pc tout "propre".
Revers de la médaille? Parfois ces opérations vous demandent "un peu de temps".
Mais il faut savoir être patient, voyez plutôt :

Patience

Pour cette opération, un p'tit délai d'environ 131 années m'est demandé ... une paille!!!!
:) tatiak

Posté par tatiak à 19:23 - Humeur - Commentaires [1] - Rétroliens [0] - Permalien [#]

03 novembre 2008

Scanner Snapscan Touch sous Linux Linpus

Avant propos : Pour l'installation du scanner sous Vista, c'est par là => tatiak.canalblog.com/.../5927438.html

Cette fois-ci, j'ai testé pour vous l'installation de ce même Snapscan Touch sur le Acer Aspire One sous Linpus.
Pour cela, rien de plus simple, il suffit d'installer Xsane (tout simplement par "Menu/Système/Ajouter ou enlever des logiciels") et les dépendances qui vont avec. Et puis ... c'est tout!

Une fois le scanner branché, l'application lancée depuis "Menu/Infographie/Scanner Tool" reconnait immédiatement le périphérique et la numérisation est fonctionnelle.

Plus simple que ça, je connais pas! Pour faire reconnaitre ce même scanner sur mon U1F sous Vista, il m'a fallu un week-end entier, et là en 1/2 h c'était bon!

Tout ça pour dire que parfois la pseudo complexité de Linux par rapport à d'autre systèmes d'exploitation est toute relative ...

:) tatiak

Pour d'autres modèles de scanner Agfa, je vous recommande la source suivante : http://ubunteros...article190

Posté par tatiak à 14:38 - Netbook - Commentaires [0] - Rétroliens [0] - Permalien [#]
« Accueil  1