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 et renommer des fichiers dans des dossiers et sous dossiers


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 3
    Par défaut Copier et renommer des fichiers dans des dossiers et sous dossiers
    Bonjour le people,

    J'aimerais pouvoir copier des fichiers(.txt) d'un dossier et de tout les sous dossier tout en les renommant.

    Pour l'instant j'arrive seulement à copier et renommer(je leur ajoute la date de copie) les fichiers du dossier courant sans prendre en compte les sous-dossiers et leur contenu.
    Mon code effectue également un contrôle pour voir si des nouveaux fichiers et des modifications de fichiers ont été faites pour copier chaque fichier qu'une seul fois.
    Voici mon code :

    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
    echo off
    ::Recuperation de l'annee, mois, jour, heure, minute, seconde
    SET ANNEE=%DATE:~6,4%
    SET MOIS=%DATE:~3,2%
    SET JOUR=%DATE:~0,2%
    SET HEURE=%TIME:~0,2%
    SET MINUTE=%TIME:~3,2%
    SET SECONDE=%TIME:~6,2%
    SET SEPARATION=_
        ::si l'heure est inférieure a 10 alors ajouter un 0 devant
    if %HEURE% lss 10 set HEURE=0%time:~1,1%
     
    ::Concacter la date 
    SET FULLTIME=%ANNEE%%SEPARATION%%MOIS%%SEPARATION%%JOUR%%SEPARATION%%HEURE%%MINUTE%%SECONDE%
     
    ::chemin des differents dossier
     
    SET DIRIN1=C:\cheminDossier1\
    SET DIRIN2=C:\cheminDossier2\
    SET DIRF=C:\cheminduDossierLog\f-file.txt
     
    cd %DIRIN1%
    ::boucle qui parcourt tout les fichiers du dossier
    for %%i in (%DIRIN1%\*.*) do (
     
    	call :copieName %%~nxi
    )
    pause	
     
    :copieName
    SET name=%1
    ::test l'existance du fichier
    If exist "%DIRIN1%%name%" (
    	::copie le fichier et presse f	
    	xcopy %DIRIN1%%name% %DIRIN2%%FULLTIME%%SEPARATION%%name% /M < %DIRF%
    	CALL:writeLog %ERRORLEVEL%
    	)
    goto :eof
     
    :writeLog
    ::ecriture du retour de la commande xcopy dans les log 
    ECHO. >> C:\cheminduDossierLog\log_%FULLTIME%.txt
    IF %1==0 ( ECHO %FULLTIME% - %name% Pas d'erreur %1  >>C:\cheminduDossierLog\log_%FULLTIME%.txt )
    IF %1==1 ( ECHO %FULLTIME% - %name% erreur %1 - Aucun fichier à copier n'a été trouvé >> C:\cheminduDossierLog\log_%FULLTIME%.txt )
    IF %1==2 ( ECHO %FULLTIME% - %name% erreur %1 - Opération annulée par l'utilisateur >> C:\cheminduDossierLog\log_%FULLTIME%.txt )
    IF %1==4 ( ECHO %FULLTIME% - %name% erreur %1 - Erreurs diverses comme manque de mémoire, espace disque insuffisant, nom de lecteur invalide ou syntaxe incorrecte >> C:\cheminduDossierLog\log_%FULLTIME%.txt )
    IF %1==5 ( ECHO %FULLTIME% - %name% erreur %1 - Une erreur d'écriture disque est survenue >> C:\cheminduDossierLog\log_%FULLTIME%.txt)
    GOTO :eof

    Quelqu'un a une idée pour m'aider ? Je vous remercie d'avance

  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 :

    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
    @echo off
    setlocal enableextensions disabledelayedexpansion
    chcp 1252 >nul
     
    ::Récupération de l'année, mois, jour, heure, minute, seconde
    SET ANNEE=%DATE:~6,4%
    SET MOIS=%DATE:~3,2%
    SET JOUR=%DATE:~0,2%
    SET HEURE=%TIME:~0,2%
    SET MINUTE=%TIME:~3,2%
    SET SECONDE=%TIME:~6,2%
    SET SEPARATION=_
    ::si l'heure est inférieure à 10 alors ajouter un 0 devant
    if %HEURE% LSS 10 (set HEURE=0%time:~1,1%)
     
    ::Concocter la date
    SET FULLTIME=%ANNEE%%SEPARATION%%MOIS%%SEPARATION%%JOUR%%SEPARATION%%HEURE%%MINUTE%%SECONDE%
     
    ::chemin des différents dossiers
     
    SET DIRIN1=C:\cheminDossier1\
    SET DIRIN2=C:\cheminDossier2\
    SET DossierLog=C:\cheminduDossierLog
    SET DIRF=%DossierLog%\f-file.txt
     
    if not exist "%DossierLog%" (mkdir "%DossierLog%")
    echo. > %DossierLog%\log_%FULLTIME%.txt
     
    cd %DIRIN1%
     
    ::boucle qui parcourt tous les fichiers du dossier
    for /f "delims=" %%i in ('dir /b /s /a-d') do (call:copieName "%%~i")
    pause
    exit /b 0
     
    :copieName
     
    ::teste l'existence du fichier
    If exist "%~1" (
    	::copie le fichier et presse f
    	xcopy "%~1" "%DIRIN2%%FULLTIME%%SEPARATION%%~nx1" /M < %DIRF%
    	call:writeLog %ERRORLEVEL% "%~nx1"
    )
    goto :eof
     
    :writeLog
    ::écriture du retour de la commande xcopy dans les log
    >> %DossierLog%\log_%FULLTIME%.txt (
    ECHO.
    IF %1 EQU 0 (ECHO %FULLTIME% - %~2 Pas d'erreur [%1])
    IF %1 EQU 1 (ECHO %FULLTIME% - %~2 erreur [%1] - Aucun fichier à copier n'a été trouvé)
    IF %1 EQU 2 (ECHO %FULLTIME% - %~2 erreur [%1] - Opération annulée par l'utilisateur)
    IF %1 EQU 4 (ECHO %FULLTIME% - %~2 erreur [%1] - Erreurs diverses comme manque de mémoire, espace disque insuffisant, nom de lecteur invalide ou syntaxe incorrecte)
    IF %1 EQU 5 (ECHO %FULLTIME% - %~2 erreur [%1] - Une erreur d'écriture disque est survenue)
    )
    goto :eof

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 3
    Par défaut
    D'accord merci je vais essayer ça

Discussions similaires

  1. [XL-2010] Copier des fichiers dans des répertoires différents selon leur nom
    Par paulinette dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/01/2017, 20h50
  2. Réponses: 3
    Dernier message: 21/02/2015, 20h07
  3. Script shell pour renommer des fichiers dans des sous répértoires
    Par ibuto dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/12/2013, 20h52
  4. Extrcation automatique des fichiers dans des dossiers
    Par vinvol dans le forum VBScript
    Réponses: 6
    Dernier message: 16/06/2012, 22h12
  5. Réponses: 12
    Dernier message: 11/05/2012, 11h17

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