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 :

Copier les fichiers vers un dossier


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut Copier les fichiers vers un dossier
    Bonjours,

    Je suis debutant en batch et je voulais ecrire un script batch qui permet de copier les fichiers d'un dossier en fonction de la date de modification du fichier vers un dossier portant le nom de la date de modification de ces fichiers.

    Merci pur vos reponses

  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
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    Voici une solution :

    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
    ::: Par Sachadee
    ::: 26-03-2013
    @echo off
    
    ::::LE DOSSIER SOURCE
    set $rep_source=f:\toto
    
    setlocal enabledelayedexpansion enableextensions
    
    for /f %%f in ('dir %$rep_source% /aa /b') do (set $rep=
                                                   set $rep=%%~tf&echo DATE CREATION FICHIER - !$rep!
                                                   set $rep=!$rep:/=-!&echo REMPLACEMENT CARATERE SPECIAUX - !$rep!
                                                   set $rep=!$rep:~0,10!&echo LA DATE SEULE EST - !$rep!
                                                   if not exist %$rep_source%\!$rep! md %$rep_source%\!$rep!&echo.CREATION DE !$rep!
                                                   > nul copy %%~ff %$rep_source%\!$rep!&echo COPIE DE %%f DANS !$rep!)
    
    endlocal
    Change la valeur du repertoire source et test

    Amicalement

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Salut sachadee,

    Merci pour ta reponse. Quand j'execute le fichier batch, rien ne se produit. Dans quel chemin iront ces fichiers apres copie?

    Pourriez vous m'expliquer un peu ce code?

    Merci encore

  4. #4
    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,

    Tu dois modifier cette ligne, en mettant le nom du repertoire oú se trouve tes fichiers á traiter (remplacer f:\toto):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ::::LE DOSSIER SOURCE
    set $rep_source=f:\toto
    et les nouveaux repertoires seront créer dans le repertoire que tu as indiqué.


    Amicalement

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Bonjours sachadee,

    Merci beaucoup ce code fonctionne a merveille. Juste deux petites questoins encore:
    - Si je voulais qu'il copie seulement le fichiers d'une certaine date disons du 26/03/2013 au 30/03/2013 seulement.

    - Si je voulais que ces dossiers se deplacent vers un autre emplacement car j'ai remarque que les dossiers se logent dans le meme repertoire que mon fichier batch. Donc l'idee est de lancer mon fichier batch n'importe ou sur la machine et recuperer le resultat dans un dossier cible contenant tous ces dossiers.

    Merci encore et encore

  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,

    pour changer le repertoire de copie. Tu cree un variable avec l'adresse du repertoire de destination :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ::::LE DOSSIER SOURCE
    set $rep_source=f:\toto
    
    :::::LE DOSSIER DE DESTINATION
    
    set $rep_destination=d:\tata
    et tu modifie la ligne de copy de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    > nul copy %%~ff %$rep_destination%\!$rep!&echo COPIE DE %%f DANS !$rep!)
    pour ton 1er probléme. Si tes deux dates sont dans le même mois c'est assez simple à mettre en oeuvre mais si tes 2 dates chevauches 2 mois c'est plus compliqué. Il faut tenir compte des mois qui ont 30,31 ou encore 28,29 jours
    etc..

    Amicalement

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Salut sachadee,

    Merci pour ton assistance encore. Ce petit bout de code a encore empirer les choses. Il copie les fichiers et renomme ces fichiers en date et les places dans le repertoire de destination et en laissant dans le dossier source les dossiers renomme en date. Je voulais que des qu'il place les fichiers dans chaque dossier respectif par rapport a la date et qu'il deplace tous ces repertoires dans un repertoire de destination.

    Par rapport a mon premier probleme, oui les dates ont les meme mois.

    Merci encore et encore

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Salut Sachadee,

    Sava je viens de modifier ce bout de code ca marche maintenant. Reste seulement mon premier probleme qui consistait a ne copier que le fichier du meme mois disons du 26/03/2013 au 30/03/2013 seulement.

    Merci pour votre assistance

  9. #9
    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,

    Voici le code pour ton problème.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    ::: Par Sachadee
    ::: 03-04-2013
    @echo off
    
    
    ::::LES VARIABLES A DEFINIR DANS CETTE EXEMPLE ON COPIE LES FICHIERS ENTRE LE 26 ET LE 29 DU 03 DE 2013
    
    ::::LE PREMIER JOUR DU MOIS POUR LA COPIE 
    set $j1=26
    
    ::::LE DERNIER JOUR DU MOIS POUR LA COPIE
    set $j2=29
    
    
    ::::LE MOIS
    set $mois=03
    
    
    ::::L ANNEE
    set $an=2013
    
    ::::LE DOSSIER SOURCE
    set $rep_source=f:\test
    
    setlocal enabledelayedexpansion enableextensionsin
    
    for /f %%f in ('dir %$rep_source% /aa /b') do (set $rep=
                                                   set $rep=%%~tf&echo DATE CREATION FICHIER - !$rep!
                                                   set $rep=!$rep:/=-!&echo REMPLACEMENT CARATERE SPECIAUX - !$rep!
                                                   set $rep=!$rep:~0,10!&echo LA DATE SEULE EST - !$rep!
                                                   for /l %%a in (%$j1%,1,%$j2%) do (
                                                                                      set $dat=%%a-%$mois%-%$an%&echo DATE VALIDE POUR LA COPIE : !$dat!
                                                                                      if %%a leq 9 set $dat=0!$dat!                             
                                                                                      if /i !$dat!==!$rep! (if not exist %$rep_source%\!$rep! md %$rep_source%\!$rep!&echo.CREATION DE !$rep!
                                                                                      > nul copy %%~ff %$rep_source%\!$rep!&echo COPIE DE %%f DANS !$rep!)))
    
    endlocal
    Change les variables, test et essaye de comprendre ce code et retourne le résultat.

    Amicalement

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Salut Sachadee,

    Merci pour ta reponse mais ce code ne fonctionne pas, apres lancement rien ne se produit. j'ai bien place les fichiers test dans le meme repertoire mais rien ne se passe. Peut tu s'il vous plait m'assister?

    Merci encore

  11. #11
    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 y a 5 choses que tu dois faire : (Dans cette exemple on copie les fichiers dont la date est comprise entre le 26 et le 29-03-2013 dans le répertoire f:\test.

    1 : modifier le jour de départ de tri

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ::::LE PREMIER JOUR DU MOIS POUR LA COPIE 
    set $j1=26
    2 : modifier le jour de fin du tri

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ::::LE DERNIER JOUR DU MOIS POUR LA COPIE
    set $j2=29
    3 : le mois du tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ::::LE MOIS
    set $mois=03
    4: l'annee du tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ::::L ANNEE
    set $an=2013
    5: Et enfin le chemin du répertoire source où tu va effectuer le tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ::::LE DOSSIER SOURCE
    set $rep_source=f:\test
    Amicalement

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Le probleme etait du au format de la date, ma machine est en anglais il falait juste changer set $dat=%%a-%$mois%-%$an% en set $dat=%$mois%-%%a-%$an%.

    Merci beacoup

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2014, 16h38
  2. Boucle copier/coller sur tous les fichiers d'un dossier
    Par santadrix dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/10/2012, 10h58
  3. Copier plusieurs fichiers vers un même dossier
    Par Maxime50 dans le forum Langage
    Réponses: 1
    Dernier message: 10/09/2009, 15h34
  4. Copier un fichier vers un autre dossier
    Par kofky0 dans le forum VBScript
    Réponses: 4
    Dernier message: 22/08/2007, 11h50
  5. Copier un fichier d'un dossier vers un autre
    Par rvaysse dans le forum VB.NET
    Réponses: 10
    Dernier message: 13/08/2007, 15h33

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