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 :

Lister chemins des fichiers [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut Lister chemins des fichiers
    Bonjour,

    je souhaite parser un fichier qui contiendrait la liste des fichiers des répertoires parcourus, à priori par un dir. Mon souci est d'obtenir les chemins de ces fichiers, par exemple au lieu de ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    27/03/2009  19:06               464 final.txt
    je souhaiterais obtenir ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    27/03/2009  19:06               464 C:\dossier\final.txt
    je vais partir sur un listing récursif, càd qquechose comme

    j'ai donc tenté une boucle for à laquelle j'ai essayé d'appliquer la syntaxe optionnelle pour obtenir ces chemins, impossible.
    Avec les options de Dir, c'est aussi l'impasse

    Est-ce qu'il existe une option qui permette d'obtenir les chemins des fichiers tout en préservant la forme de DIR (j'ai besoin des dates de création en fait)

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Dans ta boucle for (que tu devrais nous montrer d'ailleurs), utilise findstr

  3. #3
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Salut,

    Les solutions à ce problème ne manquent pas.

    En voici une:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /r X:\dossiercible %%i in (*) do echo %%~tzfi
    Attention toutefois au format de l'heure (am, pm sur 12h | 24h)

    enjoy;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Salut,

    la commande ci-dessus pourrait faire l'affaire, merci.
    En revanche, il ne semble pas possible d'utiliser des variables dans le genre %systemDrive%

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /r "%SystemDrive%" %%a In (*.*) do echo.%%~tzfa
    si j'exécute ce batch sur mon bureau, il va lister les fichiers du bureau et de tous ses sous-dossiers. Il faut obligatoirement trouver une astuce pour descendre dans le répertoire racine à votre avis ?

    L'autre pb c'est que c'est très très long, à partir du répertoire racine. Mon parsing consistera à ne retenir que les fichiers créés dans un créneau de date (pour ça j'arriverais à me débrouiller). J'ai pensé à exclure des répertoires connus mais ça me semble hasardeux, d'un pc à l'autre.

    Connaissez-vous un autre moyen plus rapide ?

  5. #5
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Citation Envoyé par eZula Voir le message
    si j'exécute ce batch sur mon bureau, il va lister les fichiers du bureau et de tous ses sous-dossiers.
    Là, ça veut dire simplement que la variable «SystemDrive» ne semble pas être renseignée parmi les variables d'environnement, auquel cas ça liste le répertoire courant.

    aussi pense bien à écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /r %SystemDrive%\ %%a in (*) do ...
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /r %SystemDrive%\ %%a in (*.*) do ...

    Citation Envoyé par eZula Voir le message
    L'autre pb c'est que c'est très très long... J'ai pensé à exclure des répertoires connus mais ça me semble hasardeux, d'un pc à l'autre.
    Non, en fait c'est très rapide compte tenu du nombre d'information à traiter.
    Maintenant plutôt que de tenter d'exclure des répertoires, ce serait mieux de lister uniquement ceux qui t'intéressent.

    Aussi change d'éditeur de texte. Tu remontes trop de dysfonctionnements qui n'ont pas lieu d'être sur de simples scripts.


    Enfin, une autre approche pourra s'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f ... ('dir ...') do ...
    La commande «attrib» peut aussi être utile.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Salut,

    je ne vois pas de solution pour établir un critère de sélection des zones à lister. En effet, tout répertoire est bon à sonder, l'important étant de dénicher les fichiers créés dans le laps de temps défini. L'idéal serait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /r %SystemDrive%\ %%a In (*) do echo %%~tzfa | GREP "^[0-9]\{2\}\/05\/2009"
    mais c'est affreusement long (je sais, je sais ce n'est qu'une vision subjective en comparaison à la performance de la commande )

    J'ai donc opté pour ta dernière suggestion qui semble beaucoup + rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=*" %%G in ('dir /s %SystemDrive%\ ^| "C:\Documents and Settings\xxx\Bureau\GREP" "^[0-9]\{2\}\/05\/2009"') do echo.%%~tzfaG >> coucou1.txt
    Mais je n'obtiens pas le chemin du fichier, ça me donne les résultats sous cette forme indésirable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C:\Documents and Settings\xxx\Bureau\09\05\2009  09:49            64*852 coucou1.txt 
    C:\Documents and Settings\xxx\Bureau\08\05\2009  18:02                21 renavi.txt
    C:\Documents and Settings\xxx\Bureau\07\05\2009  07:14    <REP>          WINDOWS
    ...
    Le chemin d'accès reconnu - qui déjà n'est pas bon - est donc substitué au premier caractère rencontré. Je vois bien une bidouille possible en définissant la substitution après un certain nbre de tabulations mais ça ne résoudra pas le pb du vrai chemin d'accès.

    J'ai testé qques autres possibilités offertes par la syntaxe optionnelle de for, sans grand succès. J'espère qu'il ne faut pas imbriquer une boulce for /r avec la dernière car niveau rapidité c'est sans comparaison.

    Tu as d'autres idées ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lister/supprimer des fichiers avec une extension précise
    Par guiguiomr dans le forum VBScript
    Réponses: 10
    Dernier message: 20/05/2008, 10h34
  2. java.util.zip chemin des fichiers dans l'archive ZIP
    Par Bubu017 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 15/04/2008, 17h36
  3. Chemin des fichiers et dossier
    Par kazylax dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/03/2008, 22h21
  4. Forcer téléchargement et chemin des fichiers
    Par nicolas.pissard dans le forum Langage
    Réponses: 2
    Dernier message: 15/01/2008, 14h54
  5. [VBA]Gestion des photos : modifier le chemin des fichiers
    Par alainGL dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/04/2007, 15h56

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