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 sauf le dernier fichier modifié [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    technicien
    Inscrit en
    Janvier 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Janvier 2020
    Messages : 9
    Par défaut Copie sauf le dernier fichier modifié
    Bonjour,

    Dans le cadre d'un projet, je souhaite sauvegarder et archiver des fichiers créé régulièrement par un logiciel. Jusqu'ici je passais par un logiciel classique de sauvegarde, mais je n'en suis pas pleinement satisfait. Je me suis donc tourné vers la création d'un script.

    Mon script aura plusieurs fonction :

    - Archiver (déplacer) des fichiers de plus de 21 jours dans un dossier d'archivage
    - Copier des fichiers ayant moins de 21 jours dans un dossier de sauvegarde
    - Ne pas copier le dernier fichier modifié

    Je me suis donc lancé dans la création d'un script avec le lancement quotidien d'un fichier.bat via le planificateur de tâches de windows. Malgré mon niveau débutant en programmation, j'ai réussi à créer ce projet :

    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
    16
    17
    18
    19
    20
    @echo off
    rem Sauvegarde et Archivage des fichiers
     
    rem Configuration
    set dossier_source=C:\ok\
    set dossier_archivage=c:\ok\old\
    set dossier_sauvegarde=c:\ok\copy\
    set nb_jours_avant_archivage=21
     
    rem Archivage des fichiers vieux de plus de xx jours
     
    forfiles /p %dossier_source% /m *.txt /c "cmd /c move @file %dossier_archivage%@file" /d -%nb_jours_avant_archivage%
     
    rem Suppression des fichiers vieux de plus de xx jours dans le dossier sauvegarde
     
    forfiles /p %dossier_sauvegarde% /m *.txt /c "cmd /c del @file" /d -%nb_jours_avant_archivage%
     
    rem Copie des fichiers modifié avant minuit vers le dossier de sauvegarde
     
    forfiles /p %dossier_source% /m *.txt /c "cmd /c copy @file %dossier_sauvegarde%@file" /d -1

    Je bloque cependant sur le fait de ne pas copier le dernier fichier modifié situé dans mon dossier source. J'ai contourné le problème en ne copiant pas les fichiers créés dans la journée (/d -1) mais ce n'est pas pleinement satisfaisant.

    Avez vous une idée pour que je puisse finaliser ce script ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Pour la dernière étape j'utiliserai plutôt ceci
    A tester avec des dossiers de tests

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    set dossier_source=C:\ok\
    set dossier_sauvegarde=c:\ok\copy\
     
    for /f "skip=1 tokens=*" %%a in ('dir "%dossier_source%*.txt" /b /a-d /o-d /tw') do copy "%%~a" "%dossier_sauvegarde%%%~nxa"
    pause

  3. #3
    Membre régulier
    Homme Profil pro
    technicien
    Inscrit en
    Janvier 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Janvier 2020
    Messages : 9
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Pour la dernière étape j'utiliserai plutôt ceci
    A tester avec des dossiers de tests

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    set dossier_source=C:\ok\
    set dossier_sauvegarde=c:\ok\copy\
     
    for /f "skip=1 tokens=*" %%a in ('dir "%dossier_source%*.txt" /b /a-d /o-d /tw') do copy "%%~a" "%dossier_sauvegarde%%%~nxa"
    pause
    Merci pour votre réponse, malheureusement je viens de tester le code et la commande me répond que "le fichier spécifié est introuvable"

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Peux tu mettre un echo devant la commande afin de vérifier la ligne

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off
    set dossier_source=C:\ok\
    set dossier_sauvegarde=c:\ok\copy\
     
    for /f "skip=1 tokens=*" %%a in ('dir "%dossier_source%*.txt" /b /a-d /o-d /tw') do echo copy "%%~a" "%dossier_sauvegarde%%%~nxa"
    pause

  5. #5
    Membre régulier
    Homme Profil pro
    technicien
    Inscrit en
    Janvier 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Janvier 2020
    Messages : 9
    Par défaut
    Avec le Echo, j'obtiens ceci en test rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Erreur*: Aucun fichier trouvé avec le critère de recherche spécifié.
    copy "test3.txt" "c:\ok\copy\test3.txt"
    copy "test2.txt" "c:\ok\copy\test2.txt"
    copy "test1.txt" "c:\ok\copy\test1.txt"
    Erreur*: Aucun fichier trouvé avec le critère de recherche spécifié.
    Appuyez sur une touche pour continuer...
    Les deux erreurs sont "normales" par rapport à la date des fichiers testés. Pour les fichiers à copier, la liste est bonne mais la commande ne réalise pas la copie.

    C'est le résultat de la commande ci dessous (quelque peu modifié par rapport au code batch inscrit plus haut) :


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    @echo off
    rem Sauvegarde et Archivage des fichiers vidéos
     
    rem Configuration
    set dossier_source=C:\ok\
    set dossier_archivage=c:\ok\old\
    set dossier_sauvegarde=c:\ok\copy\
    set nb_jours_avant_archivage=21
     
    rem Archivage des fichiers vieux de plus de xx jours
     
    forfiles /p %dossier_source% /m *.txt /c "cmd /c move @file %dossier_archivage%@file" /d -%nb_jours_avant_archivage%
     
    rem Copie des fichiers modifié avant minuit vers le dossier de sauvegarde
     
    rem forfiles /p %dossier_source% /m *.txt /c "cmd /c copy @file %dossier_sauvegarde%@file" /d -1
     
    for /f "skip=1 tokens=*" %%a in ('dir "%dossier_source%*.txt" /b /a-d /o-d /tw') do echo copy "%%~a" "%dossier_sauvegarde%%%~nxa"
     
    rem Suppression des fichiers vieux de plus de xx jours dans le dossier sauvegarde
     
    forfiles /p %dossier_sauvegarde% /m *.txt /c "cmd /c del @file" /d -%nb_jours_avant_archivage%
     
    pause

    Merci

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    La commande de copie te parait cohérente, en fonction des noms et emplacement de fichier ?

    D'ailleurs avec la commande il ne devrait y avoir qu'une copie, tu l'a lancé plusieurs fois ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Ouvrir dernier fichier modifié d'un dossier
    Par Renato75 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/08/2013, 22h20
  2. [SP-2010] Webpart top 10, derniers fichiers modifiés
    Par diabli73 dans le forum SharePoint
    Réponses: 7
    Dernier message: 11/10/2011, 14h01
  3. recupération du dernier fichier modifié
    Par vince2005 dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2010, 15h27
  4. Réponses: 8
    Dernier message: 11/12/2007, 17h04
  5. copie des derniers fichiers crees
    Par captainamerica75 dans le forum VBScript
    Réponses: 3
    Dernier message: 29/08/2007, 10h34

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