Partage
  • Partager sur Facebook
  • Partager sur Twitter

Listage de répertoires

avec exportation du résultat...

Sujet résolu
    22 juin 2011 à 9:28:54

    Bonjour,

    Je recherche un outil (ou commande DOS) qui me permettrait de lister l'ensemble des dossiers, sous dossiers, fichiers, date de création, dernière date de modification à partir d'un répertoire sous C:\ ou sur un réseau.

    Je travaille sur Windows Vista :(

    Si en plus le résultat pouvait être exporté en .csv ou .txt pour alimenter derrière une base Access ou un fichier Excel, alors là, ce serait le paradis :D

    Je fais des recherches également de mon côté. Merci.

    Cordialement
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 juin 2011 à 10:34:58

      Regarde du côté de PowerShell.
      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2011 à 10:48:47

        Pas besoin de PowerShell, notre bon vieux cmd.exe est bien assez puissant pour ça.

        Tu as la commande dir qui te permet de lister les fichiers et répertoires.
        Avec certaines options et attributs tu peux voir les fichiers cachés ou encore leur dâte de création etc...

        Si tu veux exporter le résultat d'une commande dans un fichier .txt il te suffit de rajouter > nomdufichier.txt.

        La commande de base serais donc :

        dir c:\ /a > liste.txt

        Si tu veux plus d'options pour ta commande, la liste se trouve <lien url=http://1100f.free.fr/Batchs/la_commande_dir.htm>ici</lien>
        • Partager sur Facebook
        • Partager sur Twitter

        Kevin Cousin, passionné d'informatique

        Anonyme
          22 juin 2011 à 11:27:16

          Ouais mais pour faire un .csv et afficher les dates de modifs et les dates de création, dir suffit pas.
          • Partager sur Facebook
          • Partager sur Twitter
            22 juin 2011 à 13:06:21

            Je pense qu'avec un script shell basé sur la commande dir on peux s'en tirer...

            Pour ce qui est des dates de créations et de modification, il suffit de jouer sur le paramètre /T:

            Citation


            /T Contrôle le champ heure affiché ou utilisé dans le tri.
            heure C Création
            A Dernier accès
            W Dernière écriture



            Voilà les détails de la commande dir:

            Citation


            Affiche une liste de fichiers et de sous-répertoires dans un répertoire.

            DIR [lecteur:][chemin][nom_de_fichier] [/A[[:]attributs]] [/B] [/C] [/D] [/L]
            [/N] [/O[[:]tri]] [/P] [/Q] [/S] [/T[[:]heure]] [/W] [/X] [/4]

            [lecteur:][chemin][nom_de_fichier]
            Spécifie le lecteur, le répertoire et/ou fichiers à lister.

            /A Affiche les fichiers dotés des attributs spécifiés.
            attributs D Répertoires R Lecture seule
            H Caché A Archive
            S Système - Préfixe de négation
            /B Utilise le format abrégé (noms des fichiers).
            /C Affiche le séparateur de milliers pour les tailles de fichiers.
            Ceci est la valeur par défaut. Utilisez /-C pour désactiver l'affichage
            du séparateur.
            /D Sur cinq colonnes avec fichiers triés par colonne.
            /L Affiche en minuscules.
            /N Nouveau format longue liste où les noms de fichiers sont à droite.
            /O Affiche les fichiers selon un tri spécifié.
            tri N Nom (alphabétique) S Taille (ordre croissant)
            E Extension (alphabétique) D Date et heure (chronologique)
            G Répertoires en tête - Préfixe en ordre indirect
            /P Arrêt après l'affichage d'un écran d'informations.
            /Q Affiche le nom du propriétaire du fichier.
            /S Affiche les fichiers d'un répertoire et de ses sous-répertoires.
            /T Contrôle le champ heure affiché ou utilisé dans le tri.
            heure C Création
            A Dernier accès
            W Dernière écriture
            /W Affichage sur cinq colonnes.
            /X Affiche les noms courts générés pour les noms de fichier non 8.3 car.
            Ce format est celui de /N avec le nom court inséré avant le nom long.
            S'il n'y a pas de nom court, des espaces seront affichés à la place.
            /4 Affiche l'année sur quatre chiffres.

            Les commutateurs peuvent être préconfigurés dans la variable d'environnement
            DIRCMD. Pour les ignorer, les préfixer avec un trait d'union. Par exemple /-W.

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              22 juin 2011 à 13:55:18

              J'viens d'essayer, on peut utiliser /T:C ou /T:A mais pas les deux en même temps, et /T:CA ne marche pas non plus.
              • Partager sur Facebook
              • Partager sur Twitter
                22 juin 2011 à 14:09:43

                Je suis plus habitué au shell de linux... Tu ne saurait pas s'il y a l'équivalent de la commande grep sous DOS? C'est une commande qui permet de récupérer juste une partie d'une ligne (par exemple la première colonne).
                • Partager sur Facebook
                • Partager sur Twitter
                  22 juin 2011 à 16:05:02

                  Merci beaucoup vous m'avez déjà permis de bien avancer :)

                  J'ai essayé ceci :

                  dir [chemin répertoire] /s/b/ad

                  J'obtiens bien, ligne par ligne, un chemin complet pour chaque répertoire et sous-répertoire. Parfait pour récupérer ça en Excel ou Access ;)

                  Si je veux rajouter /T:W ou /T:C cela ne fonctionne pas :o , j'obtiens le même résultat que sans ce paramètre. C'est dommage car j'aurais absolument besoin des dates de dernières modifications.

                  Sinon je n'ai pas trouvé PowerShell, ou plutôt je ne comprends pas ce que c'est... :-° Est-ce un utilitaire ?

                  Merci

                  Cordialement
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    22 juin 2011 à 16:08:13

                    PowerShell, c'est le futur de la ligne de commandes sous Windows.
                    Genre 1000x plus puissant (et - je vais me faire tuer - plus puissant que le shell unix..).

                    Avec ça tu peux récupérer les infos des fichiers et ensuite les afficher comme tu veux... mais j'en sais pas plus.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 juin 2011 à 17:04:52

                      Voilà un script qui devrait pouvoir t'aider... Il est encore à débugger, désolé :) Mais ça devrait te fournir une bonne base... Je n'ai fait qu'afficher les informations mais avec une redirection vers un fichier, tu peux les stocker avec un séparateur particulier et donc les ré exploiter dernière...

                      @echo off
                      
                      echo .:: Listage des fichiers du repertoire C:\ ::.
                      
                      echo -------------------------------------
                      :: On parcours la liste de tous les fichiers
                      for /r C:\ %%i in (*) do ( 
                      :: On affiche le chemin complet du fichier
                      echo Fichier: %%i 
                      :: On affiche le nom de fichier
                      echo Nom: %%~nxi 
                      :: On Affiche le répertoire du fichier
                      echo Répertoire: %%~dpi
                      :: On récupère et on affiche la date de création du fichier
                      for /f "tokens=1 delims= " %%c in ('dir %%~dpi /T:c ^| find "%%~nxi"') do echo date de création: %%c
                      :: On récupère et on affiche la date de dernier accès du fichier
                      for /f "tokens=1 delims= " %%a in ('dir %%~dpi /T:a ^| find "%%~nxi"') do echo date de dernier accès: %%a
                      :: On récupère et on affiche la date de dernière écriture du fichier
                      for /f "tokens=1 delims= " %%w in ('dir %%~dpi /T:w ^| find "%%~nxi"') do echo date de derniere ecriture: %%w
                      echo -------------------------------------
                      )
                      
                      pause
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 juin 2011 à 22:49:10

                        @aethec

                        Tu peux faire bien plus que ça avec PowerShell.

                        C'est le meilleur Shell exéistant aujourd'hui.

                        Mais notre bon vieux cmd.exe ne sera pas remplacé aussi facilement car PowerShell est beaucoup trop compliqué.

                        Mais il est déjà intégré à Windows 7 (et supérieurs quand il y en aura)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Kevin Cousin, passionné d'informatique

                        Anonyme
                          22 juin 2011 à 23:07:03

                          C'était un exemple, genre le truc qui répond à la question de l'OP...

                          (et il est sous Vista aussi, à moins que je ne me trompe)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 juin 2011 à 11:19:02

                            Merci à tous, je suis en contact avec lecarpla pour adapter son script. Nous vous ferons un retour une fois finalisé.

                            Cordialement
                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 juin 2011 à 23:43:32

                              Voilà le script que nous avons mis au point:

                              @echo off
                              
                              set repertoire=C:\
                              
                              :: Supprime l'éventuel fichier listage.txt provenant d'une exécution antérieure du script
                              del listage.txt
                              
                              :: Permet d'utiliser des variables dans les boucles for
                              setlocal enableDelayedExpansion
                              
                              echo .:: Listage des fichiers du repertoire %repertoire% ::.
                              
                              echo -------------------------------------
                              :: On parcours la liste de tous les fichiers
                              for /r %repertoire% %%i in (*) do ( 
                              :: On stock le chemin complet du fichier
                              set fichier=%%i 
                              :: On stock le nom de fichier
                              set fichier=%%~nxi 
                              :: On Affiche le répertoire courant
                              set repertoire=%%~dpi
                              :: On récupère et on stock la date de création du fichier
                              for /f "tokens=1 delims= " %%c in ('dir "%%~dpi" /T:c ^| find "%%~nxi"') do set dateC=%%c
                              :: On récupère et on stock la date de dernier accès du fichier
                              for /f "tokens=1 delims= " %%a in ('dir "%%~dpi" /T:a ^| find "%%~nxi"') do set dateDA=%%a
                              :: On récupère et on stock la date de dernière écriture du fichier
                              for /f "tokens=1 delims= " %%w in ('dir "%%~dpi" /T:w ^| find "%%~nxi"') do set dateDE=%%w
                              :: On affiche les informations séparées par des | annulés par un accent circonflexe
                              echo !repertoire! ^| !fichier! ^| !dateC! ^| !dateDA! ^| !dateDE!
                              :: On écrit les informations ligne après ligne dans le fichier listage.txt
                              echo !repertoire! ^| !fichier! ^| !dateC! ^| !dateDA! ^| !dateDE! >> listage.txt
                              echo -------------------------------------
                              )
                              
                              endlocal
                              
                              
                              pause
                              



                              Il parcours toute l'arborescence à partir du répertoire défini à la ligne set repertoire=C:\ (ici le répertoire de début et C:\) et pour chaque fichier affiche:
                              le répertoire du fichier | le nom du fichier | la date de création du fichier | la date de dernier accès du fichier | la date de dernière modification du fichier

                              Et inscrit ces informations dans un fichier nommé listage.txt

                              On sait jamais, ça pourra peut-être servir à quelqu'un d'autre un jour... :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 juin 2011 à 17:55:08

                                Un grand merci ;) à lecarpla qui a trouvé exactement la solution à mon problème et qui plus est en développant ce bout de code !

                                Tout simplement génial et parfait !

                                :p
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  27 février 2017 à 11:21:53

                                  @lecarpa: cela a effectivement servi à quelqu'un un jour.

                                  Merci.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 avril 2018 à 16:52:38

                                    Tout d'abord, merci aussi : ce batch m'a déjà été très utile :)

                                    Même si ça fait bientôt 7 ans que le sujet a été initié, je me permets de rajouter 2 questions complémentaires :

                                    - le fichier texte exporté ne gère pas bien les accents des chemins / fichiers (ex. : "unités paysagères.ai" devient "unit‚s paysagŠres.ai"). Pensez-vous qu'il soit possible de gérer cela ?

                                    - pensez-vous qu'il soit possible d'ajouter dans ce listing les "répertoires" et leur date de création / accès / modification ? (pas uniquement les fichiers de ces répertoires)

                                    Merci à vous !

                                    Sylvain

                                    Edition :

                                    Désolé, pour le premier point, je viens de trouver tout seul comme un grand, en ajoutant :

                                    chcp 28591 > nul

                                    Ça marche !

                                    Pour le 2e point (prise en compte des répertoires), je veux bien votre aide :)

                                    Sylvain

                                    -
                                    Edité par Sylvain_M. 12 avril 2018 à 16:59:47

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 octobre 2019 à 16:21:53 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


                                      Listage de répertoires

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown