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
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! :)
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 :
Pour cette opération, un p'tit délai d'environ 131 années m'est demandé ... une paille!!!!
:) tatiak
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




