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 :

Récupérer le dernier fichier créé


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mai 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire de données

    Informations forums :
    Inscription : Mai 2011
    Messages : 44
    Par défaut Récupérer le dernier fichier créé
    Bonsoir à tous,

    Dans le cadre professionnel, je suis amenée à effectuer des actions répétitives que j'ai pensé pouvoir automatiser à l'aide d'un script batch. Cependant je débute totalement dans le batch et galère un peu avec mon script.

    Le but de mon .bat : supprimer tous les fichiers présents dans une arborescence en ne gardant que la ou les dernière(s) version(s) de chacun des sous-dossiers.

    J'ai une arborescence de ce type :
    Dossier
    Sous-dossier 1
    fichier_v1
    fichier_v2
    Sous-dossier 2
    fichier_v1
    fichier_v2
    Sous-dossier 3
    fichier_v1
    fichier_v2
    autrefichier_v1
    autrefichier_v2

    Là où je coince : récupérer le ou les dernier(s) fichier(s) créé(s).

    Mon script est le suivant :
    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
    @echo on
    
    set dossier=C:\Users\MonPC\Documents\PTEST
    cd %dossier%
    mkdir temp
    set DossTemp=%dossier%\temp
    
    cd %dossier%\03_BAT
    for %%d in (%cd%) do (
    	for /f "delims=" %%i in ('dir %cd%\*.* /TC') do set file=%%i
    	move %file% C:\Users\Lily\Documents\PTEST\temp
    	del /p /s *.*
    	move %DossTemp%\%file%
    )
    
    cd %dossier%
    rmdir temp
    
    pause
    Lorsque je l'exécute, je me rends compte qu'il ne sélectionne pas les derniers fichiers des sous-dossiers, mais les sous-dossiers eux-mêmes. De plus, le dossier temp initialement créé à la racine de PTEST est déplacé à la racine de 03_BAT.
    Je ne m'explique pas pourquoi.

    Je sais que ce sujet à déjà été traité sur ce forum et d'autres, je me suis d'ailleurs aidée des réponses que j'ai pu trouver pour construire mon script. Cependant je constate que cela ne fonctionne pas pour moi.

    Pourriez-vous m'éclaircir sur ce que j'ai fait de mal ?

    Merci à vous et bonne soirée

  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,

    voici une petite fonction pour récuperer le dernier fichier créé d'un répertoire:
    mets le bon chemin dans $chemin et test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @ECHO OFF
    set $chemin="c:\test"
    for /f "delims=" %%a in ('dir %$chemin% /aa/b/o-d') do (set $f="%%a"
                                                   goto:next)
    :next
    echo le dernier fichier cr‚‚ est : %$f%

  3. #3
    Membre averti
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mai 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire de données

    Informations forums :
    Inscription : Mai 2011
    Messages : 44
    Par défaut
    Merci pour ton aide.

    J'ai quelque peu arrangé le script, car mes fichiers ne sont pas archivés donc lorsque j'exécutais ton script, j'obtenais l'erreur "Fichier introuvable".

    Le script que j'exécute est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set $chemin=D:\test\PTDF_T1\02_BAT
    set $c=1
    for /f "delims=" %%a in ('dir %$chemin% /b/o-d') do if %$c%==1 (set $file="%%a"
                                                                        goto:next)
    
    :next
    echo le dernier fichier cree est : %$file%
    Cependant à l'exécution du script, celui-ci ne rentre pas dans les sous-dossiers de mon répertoire, de sorte que le dernier fichier qu'il me renvoie est en fait un des sous-dossiers, et non les derniers fichiers de chacun des sous-dossiers.

    Par ailleurs, j'ai essayé de comprendre ton script mais je ne comprends pas pourquoi tu défini la variable $c. Pourrais-tu me l'expliquer s'il te plaît ?

    [EDIT] Pour info, j'ai modifié l'explication de mon problème car je me suis rendue compte que ce n'était pas très clair. Il s'agit bien de sélectionner la ou les dernière(s) version(s) de chacun des sous-dossiers.

  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
    Par défaut
    En fait dans ce cas elle ne sert effectivement à rien
    La fatigue....

    Maintenant pour ton autres problèmes tu peux jouer sur les paramètres de DIR

    /s pour prendre en compte les sous dossiers
    /ad pour ne récuperer que les répertoire.


Discussions similaires

  1. Récupérer le dernier fichier d'un répertoire
    Par andrech dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 16/06/2015, 11h26
  2. Réponses: 1
    Dernier message: 24/02/2009, 18h12
  3. Récupérer les derniers caractères d'une ligne d'un fichier texte
    Par Laaris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/01/2009, 16h06
  4. Récupérer le premier ou dernier fichier d'une liste
    Par adlmdi dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 11/09/2007, 10h53

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