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 déplacement de fichier et archivage [Batch]


Sujet :

Scripts/Batch

  1. #21
    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 : 47
    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
    Salut,

    Pour déplacer au lieu de copier il suffit de remplacer la deuxième commande XCOPY par la commande MOVE, c'est aussi simple que ça.

    Je te souhaite une bonne journée.

  2. #22
    Membre éclairé 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
    Par défaut
    ok ok
    J'en apprends tous les jours !
    je regarde

  3. #23
    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 : 47
    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
    Si tu veux des explications sur le fonctionnement du code, n'hésite pas.

    C'est vrai que je n'ai pas mis beaucoup de commentaires pour expliquer ce que font les différentes parties.

  4. #24
    Membre éclairé 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
    Par défaut
    Je veux bien la version avec les commentaires !!

  5. #25
    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 : 47
    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
    Voilà j'espère que c'est plus clair maintenant :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    @echo off
     
    : --------------------------------------------------------------
    : on active l'expansion retardée des variables
    : --------------------------------------------------------------
     
    setlocal enabledelayedexpansion
     
    : --------------------------------------------------------------
    : on modifie le codepage pour prendre en compte les accents
    : --------------------------------------------------------------
     
    chcp 28591 >nul
     
    : --------------------------------------------------------------
    : on définit les variables dont on aura besoin
    : --------------------------------------------------------------
     
    set "source=D:\PHOTOS\ADO - SAUVEGARDE TELEPHONE"
    set "destination=D:\PHOTOS\SGA  -  A  TRIER"
    set "archivage=%source%\OK ARCHIVE"
     
    : --------------------------------------------------------------
    : on se positionne dans le dossier contenant les fichiers
    : tout en vérifiant que le dossier existe bien, sinon on
    : quitte le script
    : --------------------------------------------------------------
     
    cd /d %source% || exit /b 1
     
    : --------------------------------------------------------------
    : on crée les dossiers où vont arriver les fichiers
    : --------------------------------------------------------------
     
    if not exist "%destination%" (mkdir "%destination%")
    if not exist "%archivage%" (mkdir "%archivage%")
     
    : --------------------------------------------------------------
    : on traite tous les fichiers du dossier
    : --------------------------------------------------------------
     
    for /r %%A in (*.*) do (
    	for /f "tokens=2 delims=_-" %%E in ("%%~nA") do (
     		echo.%%E | findstr /R "[0-9][0-9][0-9][0-9][0-9][0-9]" >nul && (                 %rem on récupère la deuxième partie (tokens=2) du nom et on vérifie qu'il s'agit bien de 6 chiffres %
    			set "dossier=%%E"
    			set "dossier=!dossier:~0,4! !dossier:~4,2! !dossier:~6,2!"               %rem on découpe la date récupérée dans le nom de fichier pour créer un nouveau nom de dossier %
    			echo.                                                                    %rem on saute une ligne %
    			if not exist "%destination%\!dossier!" (mkdir "%destination%\!dossier!") %rem on crée le nouveau dossier s'il n'existe pas %
    			xcopy /Y "%%~A" "%destination%\!dossier!" && call :fonction "%%~A"       %rem on copie le fichier dans le dossier d'arrivée et on appelle (CALL) la routine d'archivage %
    		)
    	) 
    )
     
    echo. & pause
     
    : --------------------------------------------------------------
    : fin du script, on quitte (le code erreur 0 est facultatif)
    : --------------------------------------------------------------
     
    exit /b 0
     
    : --------------------------------------------------------------
    : on crée une routine pour déplacer les fichiers dans l'archive
    : --------------------------------------------------------------
     
    :fonction
     
    set "fichier=%~dp1"					%rem on récupère le chemin du fichier qu'on doit archiver %
     
    echo.!fichier! | find "%archivage%" >nul || (           %rem astuce pour exclure les fichiers déjà archivés %
    	set "archive=!fichier:%source%=%archivage%!"    %rem on substitue le chemin du fichier avec le chemin de l'archive %
    	>nul move /Y %1 "!archive!"                     %rem on déplace le fichier dans l'archive %
    )
     
    : --------------------------------------------------------------
    : on quitte la routine, on revient à la ligne succédant le CALL
    : --------------------------------------------------------------
     
    goto :eof


    En testant le script incluant les commentaires je me suis rendu compte d'un petit problème, je vais essayer de rectifier et je reviens vers toi.

  6. #26
    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 : 47
    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
    Voilà la version corrigé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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    @echo off
     
    : --------------------------------------------------------------
    : on active l'expansion retardée des variables
    : --------------------------------------------------------------
     
    setlocal enabledelayedexpansion
     
    : --------------------------------------------------------------
    : on modifie le codepage pour prendre en compte les accents
    : --------------------------------------------------------------
     
    chcp 28591 >nul
     
    : --------------------------------------------------------------
    : on définit les variables dont on aura besoin
    : --------------------------------------------------------------
     
    set "source=D:\PHOTOS\ADO - SAUVEGARDE TELEPHONE"
    set "destination=D:\PHOTOS\SGA  -  A  TRIER"
    set "archivage=%source%\OK ARCHIVE"
     
    : --------------------------------------------------------------
    : on se positionne dans le dossier contenant les fichiers
    : tout en vérifiant que le dossier existe bien, sinon on
    : quitte le script
    : --------------------------------------------------------------
     
    cd /d %source% || exit /b 1
     
    : --------------------------------------------------------------
    : on crée les dossiers où vont arriver les fichiers
    : --------------------------------------------------------------
     
    if not exist "%destination%" (mkdir "%destination%")
    if not exist "%archivage%" (mkdir "%archivage%")
     
    : --------------------------------------------------------------
    : on traite tous les fichiers du dossier
    : --------------------------------------------------------------
     
    for /r %%A in (*.*) do (
     
    	echo.%%A | findstr /i /C:"%archivage%" /C:"%destination%" >nul || (                                          %rem on exclut les fichiers de l'archive et du dossier d'arrivée %
     
    		for /f "tokens=2 delims=_-" %%E in ("%%~nA") do (
     
     			echo.%%E | findstr /R "[0-9][0-9][0-9][0-9][0-9][0-9]" >nul && call:fonction "%%~E" "%%~A"   %rem on récupère la deuxième partie (tokens=2) du nom et on vérifie qu'il s'agit bien de 6 chiffres %
     
    		)
    	)
    )
     
    echo. & pause
     
    : --------------------------------------------------------------
    : fin du script, on quitte (le code erreur 0 est facultatif)
    : --------------------------------------------------------------
     
    exit /b 0
     
    : --------------------------------------------------------------
    : on crée une routine pour déplacer les fichiers et les archiver
    : --------------------------------------------------------------
     
    :fonction
     
    set "dossier=%~1"
    set "dossier=!dossier:~0,4! !dossier:~4,2! !dossier:~6,2!"               %rem on découpe la date récupérée dans le nom de fichier pour créer un nouveau nom de dossier %
     
    if not exist "%destination%\!dossier!" (mkdir "%destination%\!dossier!") %rem on crée le nouveau dossier s'il n'existe pas %
     
    echo.                                                                    %rem on saute une ligne %
     
    xcopy /Y "%~2" "%destination%\!dossier!" && (                            %rem on copie le fichier dans le dossier d'arrivée %
     
    	set "fichier=%~dp2"					         %rem on récupère le chemin du fichier qu'on doit archiver %
    	set "archive=!fichier:%source%=%archivage%!"                     %rem on substitue le chemin du fichier par le chemin de l'archive %
    	>nul move /Y "%~2" "!archive!"                                   %rem on déplace le fichier dans l'archive %
     
    )
     
    : --------------------------------------------------------------
    : on quitte la routine, on revient à la ligne succédant le CALL
    : --------------------------------------------------------------
     
    goto :eof

    La correction concerne le scénario dans lequel le dossier d'archive ou bien le dossier d'arrivée ferait partie du dossier de départ, ce qui entrainerait une prise en compte inutile de ces fichiers.

  7. #27
    Membre éclairé 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
    Par défaut
    Merci à toi !
    Je vais étudier !!!

  8. #28
    Membre éclairé 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
    Par défaut
    Hello
    Merci pour le descriptif je pense avoir compris l'enchainement !
    Petite question :
    Est-ce que je peux enchaine les différents codes ?
    Cela ne posera de problème pour les variable "Source....." ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Batch] Script de déplacement de fichiers datant de 10 jours
    Par sousket dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 15/06/2011, 17h49
  2. Script de déplacement fichiers
    Par WolwX dans le forum Linux
    Réponses: 5
    Dernier message: 17/10/2010, 16h37
  3. Script de déplacement de fichier wav qui ne fonctionne pas
    Par maxtofurious dans le forum VBScript
    Réponses: 1
    Dernier message: 24/12/2009, 18h19
  4. Déplacement de fichiers et archivage
    Par 19freddy88 dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2009, 12h42
  5. SunOS 5.8 script de déplacement de fichier
    Par aaron dans le forum Unix
    Réponses: 1
    Dernier message: 05/04/2008, 20h36

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