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

Scripts/Batch Discussion :

copie différentielle des fichiers [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Points : 271
    Points
    271
    Par défaut copie différentielle des fichiers
    Bonjour,
    en Win 2008 serveur,
    je dois faire un script qui copie toutes les nn minutes les nouveaux fichiers arrivés dans le répertoire A vers le répertoire B. Juste les nouveaux fichiers pas ceux déjà copiés (il y nn minutes).

    Une idée ?

    D'avance merci.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 188
    Points : 28 051
    Points
    28 051
    Par défaut
    Peut-être utiliser un utilitaire qui, plus que de faire de la copie, est capable de gérer la synchronisation aussi. Comme par exemple robocopy qui est un utilitaire déjà intégré à Windows serveur. En plus tu n'auras peut-être même pas besoin de script, juste une tache planifiée avec la ligne de commande qui va bien. A voir !
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 830
    Points : 9 200
    Points
    9 200
    Par défaut Utiliser XCOPY pour synchroniser des dossiers
    Utiliser XCOPY pour synchroniser des dossiers :

    Bien qu'il existe beaucoup plus d'outils avancés pour les dossiers de synchronisation, une méthode très utile (sur Windows OS) est d'utiliser la commande XCOPY. La commande XCOPY a fait partie de la suite, car les fenêtres DOS jour, et fournit un ensemble utile d'options que la commande de copie standard ne fonctionne pas.

    Si vous êtes dans un environnement où vous avez plusieurs appareils mobiles contenu de génération que vous aimeriez stockée sur un serveur central pour la sauvegarde et la collaboration de groupe, la commande XCOPY peut être une solution simple pour effectuer des migrations régulières du nouveau contenu / mise à jour sur votre mobile appareil.
    La commande XCOPY pour copier les mises à jour d'un dossier à l'autre est comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @echo off 
    XCOPY C:\SOURCE D:\DESTINATION /E /D /C /Y
    Les paramètres utilisés dans l'exemple ci-dessus définissent:
    • /E
      Ceci provoque tous les dossiers et sous-dossiers à copier
    • /D
      Ceci provoque une comparaison de date à fait, ne copiant que les éléments qui sont plus récents que l'élément de destination. Si la destination est plus, ou ne contient pas le fichier, il sera copié.
    • /C
      Ce paramètre indique XCOPY de continuer se il rencontre une erreur - généralement des erreurs se produisent avec des fichiers en lecture seule, ou des fichiers qui ont protégé autorisations .
    • /Y
      Ce paramètre indique XCOPY pour supprimer vous demander confirmation, qui est nécessaire si vous avez l'intention de créer un script d'automatisation ou de tâche planifiée.

    Si vous souhaitez automatiser ce processus, la méthode la plus simple est de créer un fichier de commandes et puis créer soit une tâche planifiée, WINDOWS CLIENT script ou un raccourci vers le fichier batch que vous souhaitez exécuter manuellement lorsque vous connectez votre appareil.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Points : 271
    Points
    271
    Par défaut
    merci infiniment Messieurs.

  5. #5
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Bonjour,
    Du coup la copie différentielle ne marche que dans un sens ....
    A (dossier courant) ---> B (sauvegarde)

    c'est béta comme question mais :
    Que se passe-t-il pour le cas où l'on travaille sur les 2 dossiers en mm temps....

    il faut faire travailler le script dans les 2 sens :
    A --> B
    Pui
    B --> A

    Et si l'on rajoute un Un troisiéme C
    comment faire pour merger tout çà ???


    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  6. #6
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    Il faut faire une boucle qui te fasse toutes les possibilités (dans les 2 sens).

    Exemple avec 4 dossiers : c:\Dossier\A c:\dossier\B c:\dossier\C c:\dossier\D (vous pouvez en rajouter...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    :://Synchro.bat
    :://SachaDee 2014
    
    @echo off&cls
    
    set "$LesDossiers=c:\Dossier\A c:\dossier\B c:\dossier\C c:\dossier\D"
    
    for %%a in (%$lesdossiers%) do (
      for %%b in (%$lesdossiers%) do (
         if not "%%a"=="%%b" (
            set "##$%%a%%b=%%a %%b")))
    for /f "tokens=2,3 delims== " %%a in ('set ##$') do echo xcopy "%%a" "%%b" /E /D /C /Y
    J'ai mis un echo pour visualiser la sortie.

    Sortie :

    xcopy "c:\Dossier\A" "c:\dossier\B" /E /D /C /Y
    xcopy "c:\Dossier\A" "c:\dossier\C" /E /D /C /Y
    xcopy "c:\Dossier\A" "c:\dossier\D" /E /D /C /Y
    xcopy "c:\dossier\B" "c:\Dossier\A" /E /D /C /Y
    xcopy "c:\dossier\B" "c:\dossier\C" /E /D /C /Y
    xcopy "c:\dossier\B" "c:\dossier\D" /E /D /C /Y
    xcopy "c:\dossier\C" "c:\Dossier\A" /E /D /C /Y
    xcopy "c:\dossier\C" "c:\dossier\B" /E /D /C /Y
    xcopy "c:\dossier\C" "c:\dossier\D" /E /D /C /Y
    xcopy "c:\dossier\D" "c:\Dossier\A" /E /D /C /Y
    xcopy "c:\dossier\D" "c:\dossier\B" /E /D /C /Y
    xcopy "c:\dossier\D" "c:\dossier\C" /E /D /C /Y
    Au final tout devrait être parfaitement synchro....

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  7. #7
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Bonjour le Forum

    J'ai modifié le script de SachaDee (et fichier en .bat)
    mais rien ne se passe, pourtant "T:\SEB PERSONNEL" est remplit de fichiers et dossiers (1.47Go)
    "C:\SYNCHRO\A C:\SYNCHRO\B C:\SYNCHRO\C" sont vides pour l'instant...

    Ne faut-il pas définir %%a et %%b ?

    QQn aurait une idée ?

    Bonne Journée
    Seb


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    :://Synchro.bat
    :://SachaDee 2014
    
    @echo off&cls
    
    set "$LesDossiers= T:\SEB PERSONNEL C:\SYNCHRO\A C:\SYNCHRO\B C:\SYNCHRO\C"
    
    for %%a in (%$lesdossiers%) do (
      for %%b in (%$lesdossiers%) do (
         if not "%%a"=="%%b" (
            set "##$%%a%%b=%%a %%b")))
    for /f "tokens=2,3 delims== " %%a in ('set ##$') do echo xcopy "%%a" "%%b" /E /D /C /Y
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  8. #8
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Comme je l'ai clairement dit :

    J'ai mis un echo pour visualiser la sortie.
    Donc enlève l'echo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    :://Synchro.bat
    :://SachaDee 2014
    @echo off&cls
    
    set "$LesDossiers= T:\SEB PERSONNEL C:\SYNCHRO\A C:\SYNCHRO\B C:\SYNCHRO\C"
    
    for %%a in (%$lesdossiers%) do (
      for %%b in (%$lesdossiers%) do (
         if not "%%a"=="%%b" (
            set "##$%%a%%b=%%a %%b")))
    for /f "tokens=2,3 delims== " %%a in ('set ##$') do xcopy "%%a" "%%b" /E /D /C /Y
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  9. #9
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Hello
    Perfecto
    ca marche bien sans echo

    Je vais le tester de mon côté

    Par contre me pose la question sur
    Il me demande si Personnel est un fichier ou un dossier.

    J'ai l'impression qu'il ne comprend pas que "SEB PERSONNEL" est le nom du dossier

    La chose est contournable ?

    Bonne journée
    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  10. #10
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 830
    Points : 9 200
    Points
    9 200
    Par défaut

    Voici le help de la commande Xcopy
    Copie des fichiers et des arborescences de répertoires.

    XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
    [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
    [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/J]
    [/EXCLUDE:fich1[+fich2][+fich3]...]

    source Spécifie le ou les fichiers à copier.
    destination Spécifie l'emplacement et/ou le nom de nouveaux fichiers.
    /A Copie uniquement les fichiers ayant l'attribut archive, ne
    modifie pas l'attribut.
    /M Copie uniquement les fichiers ayant l'attribut archive,
    désactive l'attribut archive.
    /D:j-m-a Copie les fichiers modifiés à partir de la date spécifiée.
    Si aucune date n'est donnée, copie uniquement les fichiers dont
    l'heure source est plus récente que l'heure de destination.
    /EXCLUDE:fich1[+fich2][+fich3]...
    Spécifie une liste de fichiers contenant des chaînes. Chaque
    chaîne doit être placée sur une ligne dans le fichier.
    Lorsque l'une des chaînes est trouvée dans le chemin d'accès
    absolu du fichier devant être copié, ce fichier est exclu de la
    copie. Par exemple, spécifier une chaîne telle que \obj\
    ou .obj exclura respectivement tous les fichiers situés sous
    le répertoire obj ou tous les fichiers dont l'extension
    est .obj.
    /P Confirmer la création de chaque fichier
    de destination.
    /S Copie les répertoires et sous-répertoires à l'exception des
    répertoires vides.
    /E Copie les répertoires et sous-répertoires, y compris les
    répertoires vides.
    Identique à /S /E. Peut être utilisé pour modifier /T.
    /V Vérifie la taille de chaque nouveau fichier.
    /W Vous demande d'appuyer sur une touche avant la copie.
    /C Continuer la copie même si des erreurs se produisent.
    /I Si la destination n'existe pas et que plus d'un fichier est
    copié, considérer la destination comme devant être
    un répertoire.

    /Q N'affiche pas les noms de fichiers lors de la copie.
    /F Affiche les noms de source et de destination complets lors
    de la copie.
    /L Affiche les fichiers devant être copié.
    /G Permet la copie des fichiers chiffrés vers des destinations qui
    ne prennent pas en charge le chiffrement.
    /H Copie également les fichiers cachés et les fichiers système.
    /R Remplace les fichiers en lecture seule.
    /T Crée la structure de répertoires mais ne copie pas
    les fichiers.
    N'inclut pas les répertoires ou sous-répertoires vides. /T /E
    incluent les répertoires et sous-répertoires vides.
    /U Copie seulement les fichiers existants déjà dans la
    destination.
    /K Copie les attributs. La commande normale Xcopy rétablira les
    attributs de lecture seule.
    /N Copie en utilisant les noms courts générés.
    /O Copie les fichiers d'appartenance et les informations d'ACL.
    /X Copie les paramètres d'audit de fichiers (sous-entend /O).
    /Y Supprime la demande de confirmation de remplacement de
    fichiers de destination existants.
    /-Y Provoque la demande de confirmation de remplacement
    d'un fichier de destination existant.
    /Z Copie les fichiers du réseau en mode redémarrable.
    /B Copie le lien symbolique et non pas la cible du lien.
    /J Copie avec E/S sans mémoires tampons. Recommandé pour les gros fichiers.

    Le commutateur /Y peut être défini dans la variable d'environnement COPYCMD.
    Il peut être remplacé par /-Y dans la ligne de commande.
    Donc il vous suffit d'ajouter ce paramètre /I avec les autres.
    Faites un test puis dis nous si marche bien ou non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    :://Synchro.bat
    :://SachaDee 2014
    @echo off&cls
    set "$LesDossiers= T:\SEB PERSONNEL C:\SYNCHRO\A C:\SYNCHRO\B C:\SYNCHRO\C"
    
    for %%a in (%$lesdossiers%) do (
      for %%b in (%$lesdossiers%) do (
         if not "%%a"=="%%b" (
            set "##$%%a%%b=%%a %%b")))
    for /f "tokens=2,3 delims== " %%a in ('set ##$') do xcopy "%%a" "%%b" /E /D /C /Y /I

  11. #11
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Hello
    Pas mieux !

    Là il me créé un dossier "PERSONNEL" à l'endroit où j’exécute le .bat

    au lieu de synchro dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\SYNCHRO\A C:\SYNCHRO\B C:\SYNCHRO\C

    Le probléme de prendre le nom en entier de "SEB PERSONNEL"

    --> Du coup, comment figé ce nom qui est en 2 parties
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  12. #12
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    la boucle que je t'ai fait en exemple ne prend pas en compte les noms composés.

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  13. #13
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 830
    Points : 9 200
    Points
    9 200
    Par défaut
    Citation Envoyé par GADENSEB Voir le message
    Le probléme de prendre le nom en entier de "SEB PERSONNEL"
    --> Du coup, comment figé ce nom qui est en 2 parties
    Renomme-le en "SEB_PERSONNEL" sans espace

  14. #14
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    J'ai modifié mon code pour que tu puisses utiliser les noms composées :

    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
    :://Synchro.bat
    :://SachaDee 2014
    @echo off&cls
    setlocal enabledelayedexpansion
    
    set $c=1
    set $LesDossiers="T:\SEB PERSONNEL" "C:\SYNCHRO\A" "C:\SYNCHRO\B" "C:\SYNCHRO\C"
    
    for %%a in (%$lesdossiers%) do (
      for %%b in (%$lesdossiers%) do (
         if not %%a==%%b (
            set "##$!$c!=%%a,%%b"
          set /a $c+=1)))
    
    for /f "tokens=2,3 delims==," %%a in ('set ##$') do echo xcopy %%a %%b /E /D /C /Y /I
    Sortie :

    xcopy "T:\SEB PERSONNEL" "C:\SYNCHRO\A" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\C" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\C" "C:\SYNCHRO\A" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\C" "C:\SYNCHRO\B" /E /D /C /Y /I
    xcopy "T:\SEB PERSONNEL" "C:\SYNCHRO\B" /E /D /C /Y /I
    xcopy "T:\SEB PERSONNEL" "C:\SYNCHRO\C" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\A" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\A" "C:\SYNCHRO\B" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\A" "C:\SYNCHRO\C" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\B" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\B" "C:\SYNCHRO\A" /E /D /C /Y /I
    xcopy "C:\SYNCHRO\B" "C:\SYNCHRO\C" /E /D /C /Y /I
    Enlève l'ECHO...

    Fait un test et retourne !

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  15. #15
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    @ HACKOOFR
    @ sADACHEE

    J'ai testé vos deux versions .... nikel !!!

    Je commence à comprendre comment cela marche

    Merci
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  16. #16
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 830
    Points : 9 200
    Points
    9 200
    Par défaut
    Sacha
    Excellent travail
    Je l'ai testé chez moi et ça marche 5/5 la synchronisation avec la prise en charge des noms de dossiers contenant des espaces
    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
    :://Synchro.bat
    :://SachaDee 2014
    @echo off&cls
    setlocal enabledelayedexpansion
    
    set c=1
    set LesDossiers="T:\SEB PERSONNEL" "C:\SYNCHRO\A" "C:\SYNCHRO\B" "C:\SYNCHRO\C"
    
    for %%a in (%lesdossiers%) do (
      for %%b in (%lesdossiers%) do (
         if not %%a==%%b (
            set "VAR!c!=%%a,%%b"
          set /a c+=1)))
    
    for /f "tokens=2,3 delims==," %%a in ('set VAR') do xcopy %%a %%b /E /D /C /Y /I
    Pause

  17. #17
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Hackoo,

    Je te déconseille fortement d'utiliser un autre nom de variable que celle que j'ai mise (##$).

    J'ai mis ce nom parce que je récupère ensuite le nom des variables commençant par ##$ si tu remplaçes cela par VAR et que dans
    le script il existe une variable qui commence par VAR (et ça risque d'être frequent en BAT) le code plantera.

    Donc je vous conseille d'utiliser le code avec la variable ##$ :

    A bon entendeur...

    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
    :://Synchro.bat
    :://SachaDee 2014
    @echo off&cls
    setlocal enabledelayedexpansion
    
    set $c=1
    set $LesDossiers="T:\SEB PERSONNEL" "C:\SYNCHRO\A" "C:\SYNCHRO\B" "C:\SYNCHRO\C"
    
    for %%a in (%$lesdossiers%) do (
      for %%b in (%$lesdossiers%) do (
         if not %%a==%%b (
            set "##$!$c!=%%a,%%b"
          set /a $c+=1)))
    
    for /f "tokens=2,3 delims==," %%a in ('set ##$') do xcopy %%a %%b /E /D /C /Y /I
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  18. #18
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Questions :
    - Là ce code permet uniquement de faire la copie des fichiers
    comment faire pour propager les suppressions ?
    Dans la commande (ici ou ici) on a rien pour les suppressions

    - Les constantes :
    Là tu créer une constante
    Pourrais-t-on dire que l'on créer plusieurs constantes et que l'on inclue dans la boucle ?
    (je suis pas chez moi pour tester avec ces dossiers)

    Bonne aprem
    seb

    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
    :://Synchro.bat
    :://SachaDee 2014
    @echo off&cls
    setlocal enabledelayedexpansion
    
    set $c=1
    set $LesDossiers="T:\SEB PERSONNEL" "D:\SEB PERSONNEL" "E:\SEB PERSONNEL" 
    set $LesDossiers1="T:\INFORMATIQUE" "D:\INFORMATIQUE" "E:\INFORMATIQUE"
    set $LesDossiers2="T:\PHOTOS" "D:\PHOTOS" "E:\PHOTOS"
    
    for %%a in (%$lesdossiers%) do (
      for %%b in (%$lesdossiers%) do (
         if not %%a==%%b (
            set "##$!$c!=%%a,%%b"
          set /a $c+=1)))
    
    for /f "tokens=2,3 delims==," %%a in ('set ##$') do xcopy %%a %%b /E /D /C /Y /I
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  19. #19
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    comment faire pour propager les suppressions ?
    Dans ce cas oriente toi vers la commande robocopy et son paramètre /PURGE

    comme l'avait conseillé @sevyc64


    Pour les constantes

    EDIT : Corrigé un petit bug

    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
    :://Synchro.bat
    :://SachaDee 2014
    @echo off&cls
    setlocal enabledelayedexpansion
    
    set $c=1
    set $LesDossiers="T:\SEB PERSONNEL" "D:\SEB PERSONNEL" "E:\SEB PERSONNEL" 
    set $LesDossiers1="T:\INFORMATIQUE" "D:\INFORMATIQUE" "E:\INFORMATIQUE"
    set $LesDossiers2="T:\PHOTOS" "D:\PHOTOS" "E:\PHOTOS"
    
    for %%x in ($Lesdossiers $Lesdossiers1 $Lesdossiers2) do call:sync %%x
    exit/b
    
    :Sync
    echo Traitement de : [!%1!]
    for %%a in (!%1!) do (
      for %%b in (!%1!) do (
         if not %%a==%%b (
            set "##$!$c!=%%a,%%b"
          set /a $c+=1)))
    
    for /f "tokens=2,3 delims==," %%a in ('set ##$') do echo xcopy %%a %%b /E /D /C /Y /I
    Sortie :

    Traitement de : ["T:\SEB PERSONNEL" "D:\SEB PERSONNEL" "E:\SEB PERSONNEL" ]
    xcopy "T:\SEB PERSONNEL" "D:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "T:\SEB PERSONNEL" "E:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\SEB PERSONNEL" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\SEB PERSONNEL" "E:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "E:\SEB PERSONNEL" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "E:\SEB PERSONNEL" "D:\SEB PERSONNEL" /E /D /C /Y /I
    Traitement de : ["T:\INFORMATIQUE" "D:\INFORMATIQUE" "E:\INFORMATIQUE"]
    xcopy "T:\SEB PERSONNEL" "D:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\INFORMATIQUE" "E:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "E:\INFORMATIQUE" "T:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "E:\INFORMATIQUE" "D:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "T:\SEB PERSONNEL" "E:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\SEB PERSONNEL" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\SEB PERSONNEL" "E:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "E:\SEB PERSONNEL" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "E:\SEB PERSONNEL" "D:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "T:\INFORMATIQUE" "D:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "T:\INFORMATIQUE" "E:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "D:\INFORMATIQUE" "T:\INFORMATIQUE" /E /D /C /Y /I
    Traitement de : ["T:\PHOTOS" "D:\PHOTOS" "E:\PHOTOS"]
    xcopy "T:\SEB PERSONNEL" "D:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\INFORMATIQUE" "E:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "E:\INFORMATIQUE" "T:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "E:\INFORMATIQUE" "D:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "T:\PHOTOS" "D:\PHOTOS" /E /D /C /Y /I
    xcopy "T:\PHOTOS" "E:\PHOTOS" /E /D /C /Y /I
    xcopy "D:\PHOTOS" "T:\PHOTOS" /E /D /C /Y /I
    xcopy "D:\PHOTOS" "E:\PHOTOS" /E /D /C /Y /I
    xcopy "E:\PHOTOS" "T:\PHOTOS" /E /D /C /Y /I
    xcopy "E:\PHOTOS" "D:\PHOTOS" /E /D /C /Y /I
    xcopy "T:\SEB PERSONNEL" "E:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\SEB PERSONNEL" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "D:\SEB PERSONNEL" "E:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "E:\SEB PERSONNEL" "T:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "E:\SEB PERSONNEL" "D:\SEB PERSONNEL" /E /D /C /Y /I
    xcopy "T:\INFORMATIQUE" "D:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "T:\INFORMATIQUE" "E:\INFORMATIQUE" /E /D /C /Y /I
    xcopy "D:\INFORMATIQUE" "T:\INFORMATIQUE" /E /D /C /Y /I
    Enlève l'echo


    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  20. #20
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Ca marche as l'echo ;-)

    Merci du taf !

    Je me tourne vers robocopy !

    Thanks
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PLUGIN]copie direct des fichiers du projet par FTP
    Par wizzer dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 20/04/2006, 16h40
  2. Interdire la copie des fichiers partagés en réseau
    Par Essilife dans le forum Administration
    Réponses: 4
    Dernier message: 17/01/2006, 00h46
  3. comment désactiver le copy des fichiers sur lan
    Par z7e7z dans le forum Développement
    Réponses: 4
    Dernier message: 09/01/2006, 11h10
  4. copie de base, fichier mdw, perte des droits
    Par hades666evil dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2005, 18h06
  5. Copie de 2 bases SQLserver en utilisant des fichiers
    Par dimdidi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/08/2005, 10h26

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