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 :

Robocopy dans un batch


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant en contrat pro (technicien info indus)
    Inscrit en
    Octobre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant en contrat pro (technicien info indus)
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 5
    Par défaut Robocopy dans un batch
    Bonjour,
    Alors j’aimerait savoir si c’est possible de copier grâce à la fonction Robocopy est une boucle for, les fichiers d’un répertoire A vers répertoire B, mais ne copier en fonction de la date que les 10 derniers fichiers. Par exemple nous sommes le 21/11/2016 je souhaiterais copier tous les fichiers à partir du 21 novembre jusqu’au 11 novembre à savoir que c’est fichier son trié par leur nom qui se compose de cette manière 20161121_Rapport_exigence.xls, donc j’utilise le nom de fichier pour savoir lesquels copier.

    Mon but copiait les fichiers suivants (date 21/11/2016) :
    - 20161121_...
    - 20161120_...
    -20161119_...
    Ainsi de suite jusqu’à 20161111_...

    J’espère que vous pourrez m’aider.
    Merci !

  2. #2
    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
    Par défaut
    Salut,

    ton problème comme tu le poses est simple :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
     
    set "$Nb-File=10"
    set $Today=%date:~6,4%%date:~3,2%%date:~0,2%
    set /a $Limite=%$Today%-10
     
    for /l %%a in (%$Today% -1 %$Limite%) do echo %%a

    à la place de echo %%date on fera un :

    Maintenant je sais pas si ça sera le cas de ton script si on fais la même operation le 05/12/2016

    ça ne marchera plus car la soustraction - 10 ne fonctionne plû vu que l'on change de mois :

    20161205 - 10 = 20161195 => qui n'existe pas dans un calendrier chretien :mdr:

    Donc il faudra faire une petite routine que perso je fais en vbs pour récupErer la date actuel + les 10 dates antérieur dans une liste
    que l'on enverra au BAT (Tu peux la tester tel quel) :

    Voici la routine VBS :

    Code vbs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    i=10
    
    while i > 0
        mdate = split(DateAdd("d",-i,(date)),"/")
    	liste = liste & mdate(2) & mdate(1) & mdate(0) & " "
    	i=i-1
    wend
    
    wscript.echo(liste)



    Voici le code complet qui va te créer automatiquement le code vbs , l'éxecuter et récuperer sa sortie, a savoir
    les 10 dates au format AAAAMMJJ. Et ça marchera pour n'importe quel partie du mois

    Si tu veux les dates pour 15 jours change juste la valeur de la variable Nb_Jour.

    Code bat : 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
     
    @echo off
     
    ::On defini le nb de jour
     
    set "Nb-jour=10"
     
    ::On crée le VBS avec le bon nombre de jour
    call:construct
     
    ::On récupère la liste en sortie du VBS
    for /f "delims=" %%a in ('cscript /nologo #.vbs') do set "$Liste=%%a"
     
    ::On boucle sur la liste pour faire la copy
    for %%a in (%$Liste%) do echo copy "%%a*" "c:\rep_b"
     
    del #.vbs 2>nul
    exit/b
    :construct
    (
    echo.i=%Nb-jour%&echo.while i ^> 0&echo.mdate = split(DateAdd("d",-i,(date^)^),"/"^)&echo.liste=liste^&mdate(2^)^&mdate(1^)^& mdate(0^)^&" "&echo.i=i-1&echo.wend&echo.wscript.echo(liste^)
    )>#.vbs

    enlève juste le echo si ça te convient.



  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant en contrat pro (technicien info indus)
    Inscrit en
    Octobre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant en contrat pro (technicien info indus)
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 5
    Par défaut
    bonjour à toi ! est un grand merci, mais j'ai quasiment fait pareille du coup en tout cas merci à toi pour toute c'est explication que je vais quand même garder car elles vont me resservir !
    Simple claire est précis merci !

Discussions similaires

  1. [Batch] Boucle FOR avec Robocopy dans un batch
    Par jerems26 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 17/11/2016, 08h40
  2. [Batch] Problème avec robocopy dans batch avec menu
    Par Merwyn dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 14/05/2012, 15h36
  3. recuperer date dans un batch et la placer en variable
    Par Phenomenium dans le forum Windows
    Réponses: 6
    Dernier message: 07/06/2004, 10h44
  4. probleme d' echo dans un batch
    Par zorian dans le forum Windows
    Réponses: 16
    Dernier message: 18/05/2004, 17h21
  5. Réponses: 5
    Dernier message: 01/10/2003, 15h03

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