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 :

Script de synchronisation


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2014
    Messages : 27
    Par défaut Script de synchronisation
    Bonjour,

    Je suis enseignant en technologie et j'ai fait un script qui permet de faire une copie des fichiers se trouvant sur le serveur vers des postes élèves.
    Je voudrais en plus que ce script efface les fichiers des postes élèves lorsque je les ai supprimés du serveur.

    Je pense effectué une lecture des fichiers (FOR /R) sur le poste élève et vérifier qu'ils existent sur le serveur. Si il n'existe plus, on les efface.

    Je n'arrive pas à traiter la liste des fichiers sur le poste élève dans ma boucle FOR ! Je souhaite supprimer le dossier principal (C:\Videos) pour ne garder que les sous répertoires et les fichiers.

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo Listing des fichiers de la destination
    FOR /R C:\Videos %%f IN (*.*) DO (
    set fichier=%%f:~9
    echo resultat : fichier
    echo Effacement des vidéos plus disponible dans la source
    If not exist "\\serveur\Partage videos\"+fichier del %%f)
    )
     
    echo Copie des vidéos non présente sur poste élève
    xcopy /D/E/Y "\\serveur\Partage videos\*.*" "C:\"

    Voila ce que j'obtiens
    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
    Commande ECHO désactivée.
    Listing des fichiers de la destination
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    resultat : C:\Videos\6eme\Flotter.mp4:~9
    Copie des vidÚos sur poste ÚlÞve
    0 fichier(s) copié(s)
    La commande set fichier=%%f:~9 qui permet de supprimer le répertoire de sauvegarde (c:\Videos) ne fonctionne pas !

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,

    Voilà une solution (non testée) :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @echo off
    setlocal enableExtensions disableDelayedExpansion
     
    pushd "\\serveur\Partage videos" || pause
     
    echo Listing des fichiers de la destination
     
    FOR /R "C:\Videos" %%P IN (*.*) DO (
        echo resultat : %%~nxP
        echo Effacement des vidéos plus disponible dans la source
        If not exist "%%~nxP" (del "%%~P")
    )
     
    echo Copie des vidéos non présente sur poste élève
    xcopy /D /E /Y "*.*" "C:\"

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2014
    Messages : 27
    Par défaut
    Merci Barnabe0057. Ca avance grâce à toi.

    Par contre, ~nx supprime toute l’arborescence. Je voudrais garder les sous dossiers et donc enlever que c:\videos\ ou meme que C:\
    Exemple :
    Le fichier sur le poste est
    C:\Videos\3eme\Appinventor2\20-connexion tablette.avi
    Il faudrait garder que "\3eme\Appinventor2\20-connexion tablette.avi"
    pour vérifier si il est sur le serveur
    \\serveur\Partage Video\Videos\3eme\Appinventor2\20-connexion tablette.avi

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Comme ça peut-être :

    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
    @echo off
    setlocal enableExtensions enableDelayedExpansion
    chcp 1252 >nul
    
    pushd "\\serveur\Partage videos" || pause
     
    echo Listing des fichiers de la destination
     
    FOR /R "C:\Videos" %%P IN (*.*) DO (
    	set file=%%~P
    	set file=!file:C:\Videos\=!
    	echo résultat = !file!
    	echo Effacement des vidéos plus disponible dans la source
    	If not exist "!file!" (del "%%~P")
    )
     
    echo Copie des vidéos non présente sur poste élève
    xcopy /D /E /Y "*.*" "C:\"

Discussions similaires

  1. script de synchronisation entre deux dossier (perl)
    Par miguigui dans le forum Langage
    Réponses: 6
    Dernier message: 19/05/2012, 11h37
  2. Réponses: 3
    Dernier message: 30/11/2010, 00h00
  3. script de synchronisation de systéme de fichier
    Par DidUngar dans le forum Général Python
    Réponses: 6
    Dernier message: 18/07/2008, 20h44
  4. script de synchronisation de systéme de fichier
    Par adami_1 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 30/05/2008, 20h31
  5. [langage]Synchronisation de script
    Par siaoly dans le forum Langage
    Réponses: 12
    Dernier message: 30/06/2005, 13h02

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