Générer la liste des fichiers présents dans un répertoire avec un fichier .bat (MS-DOS)

ms dos Générer la liste des fichiers présents dans un répertoire avec un fichier .bat (MS DOS)Je suis un inconditionnel du batch file. Mais oui, rappelez-vous, ces petits fichiers .bat qu’on écrivait sous DOS pour lancer nos jeux plus facilement. Ou alors sous Windows pour enchaîner des actions répétitives.

Et bien ces fichiers .bat, je les utilise quotidiennement tout simplement parce qu’ils facilitent la vie.

Aujourd’hui, je vous montre comment extraire la liste des noms de tous les fichiers présents dans un répertoire avec une seule petite ligne de DOS, avec la commande DIR suivie de quelques arguments.

Méthode 1 : lister les fichiers présents dans un répertoire

Qui n’a jamais eu besoin de sauvegarder ou de diffuser la liste des fichiers contenus dans un répertoire ? Et bien sachez que Windows n’offre pas cette possibilité en deux clics de souris. C’est ballot. Surtout qu’avec DOS, hop, cela se fait très rapidement :

  1. créez un fichier .bat – que nous appellerons liste.bat pour l’exemple.
  2. ajoutez ce bout de code :
    dir c:\temp /A /B /O:GEN > c:\filelist.txt
  3. sauvegarder et lancez le fichier bat. Un nouveau fichier sera créé (filelist.txt) sous C : contenant la liste des fichiers présents dans le répertoire c:\temp.

Explications

La fonction DIR permet de lister le contenu d’un répertoire dans une fenêtre DOS. Voici les attributs que nous avons utilisé :

/A : affiche tous les fichiers (All).
/B : affiche uniquement les noms des fichiers sur une seule colonne (Bare format) .
/O:GEN : tri par dossiers (Group folders first), extension (file Extension) et nom (Name).

> filelist.txt : permet bien sûr de sauvegarder le résultat de la requête dans un fichier au lieu de l’imprimer à l’écran.

Méthode 2 : lister les fichiers présents dans un répertoire en affichant l’arborescence

BoZo vient de nous faire part d’une autre manière d’obtenir le même résultat mais en ayant en plus le schéma de l’arborescence du répertoire. On utilise cette fois la commande TREE :

tree c:\temp /A /F > c:\filelist.txt

/A : affiche l’encodage ASCII au lieu des caractères étendus (les caractères graphiques sont remplacés par des lettres).
/F : affiche les noms des fichiers de chaque répertoire.

> c:\filelist.txt : permet toujours de sauvegarder le résultat de la requête dans un fichier au lieu de l’imprimer à l’écran.

Voilà, c’est un bout de code toujours utile, à garder sous le coude.

Auteur de l'article : Matt

Cet article a été écrit par Matt – auteur de sur SkyMinds.Net.

Passionné par tout ce qui touche le webdesign, la programmation, la musique et la guitare en particulier. Je suis le responsable du site et master of puppets général. J'enseigne le jour. Vous pouvez me contacter ici.

Suivez-moi : Mon site • Google+ • Facebook  • Twitter


11 commentaires à “Générer la liste des fichiers présents dans un répertoire avec un fichier .bat (MS-DOS)”

  1. agatzebluz a écrit :
    1

    Ça marche super. Merci pour le truc.
    Juste deux remarques : il prend aussi les répertoires, ce qui me plait.
    Il n’aime pas les accents en tous les cas sur mon poste de travail.

  2. Matt a écrit :
    2

    agat’, tu a des accents dans tes noms de fichiers/dossiers ? C’est un peu étrange non ?
    J’ai gardé la vieille nomenclature 8.3 pour les noms de fichiers.

  3. BoZo a écrit :
    3

    Et la commande tree ?

    Affiche graphiquement la structure de dossiers d’un lecteur ou d’un chemin.

    TREE [lecteur:][chemin] [/F] [/A]

    /F Affiche le nom des fichiers de chaque répertoire.
    /A Utilise ASCII au lieu des caractères étendus.

    Avec une redirection comme tu l’indiques vers un fichier txt…

  4. Matt a écrit :
    4

    Ah excellent BoZo ! Je n’avais encore jamais utilisé TREE, c’est vraiment pas mal d’avoir l’arborescence en plus. Je vais le rajouter à l’article.

  5. agatzebluz a écrit :
    5

    @ Matt : c’est XP qui m’a créé ce dossier avec des accents … et oui j’en ai parfois, en français il arrive que ce soit utile :-)

    Sinon pour la deuxième commande, j’ai du la modifier car ça ne marchait pas sur mon poste (au boulot). Et pour rester homogène, si j’étais toi je mettrai un chemin dans les deux exemples ou pas du tout, ce serait plus cohérent. J’ai du m’y reprendre à deux fois pour voir que c’était \C qui était “visé” dans le 2ème.
    Donc j’ai modifié le script en conséquence et ça marche très bien.

    Effectivement ce sont deux petits bat à garder sous le coude.
    Tu en as d’autres à partager comme ça ?

  6. Matt a écrit :
    6

    @agat’ : tu as raison, j’ai modifié le code pour la cohérence.
    Pas d’autres à partager pour le moment, je les écrit selon mes besoins.

  7. space cowboy a écrit :
    7

    @agatzebluz : Pour que tu retrouves tes accents tels qu’ils étaient, il suffit d’ouvrir le fichier .txt avec Word et lui dire d’utiliser l’encodage MS-DOS, et c’est réglé.

  8. agatzebluz a écrit :
    8

    Merci pour le truc.
    Je vais peut être adapter avec Notepad++, si ça se trouve ça va marcher.

  9. Xeos a écrit :
    9

    Salut,

    Est-ce que c’est censé fonctionner sous Windows Seven ? Parce que chez moi ça ne marque pas on dirait.

  10. Xeos a écrit :
    10

    Oups…il suffit que je poste ça pour me rendre compte que ça fonctionne en fait, j’avais juste pas vu que le fichier était créé à la racine de C alors que je le cherchais dans le même dossier…désolé !

  11. Kazoo a écrit :
    11

    Super, c’est presque pile poil ce que je cherchais. En tout cas ça me sort une grosse épine du pied.
    J’aurais voulu savoir s’il existait un moyen d’obtenir la taille des fichiers listés dans le fichier texte généré ?
    Encore merci ;)

quick-menu

Laisser un commentaire


Si vous possédez un compte, connectez-vous.

THINK. Then write. No SMS.

Me tenir informé(e) des futurs commentaires. Ou abonnez-vous sans commenter.