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

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-y :

dir c:\temp /A /B /O:GEN > c:\filelist.txt

3. sauvegardez 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.

Vous voulez un site WordPress ou WooCommerce qui soit à la fois rapide et performant? Vous êtes au bon endroit.

Découvrez comment je peux booster votre site »

Articles conseillés :

13 pensées sur “Générer la liste des fichiers présents dans un répertoire avec un fichier .bat (MS-DOS)”

  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.

    Reply
  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.

    Reply
  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…

    Reply
    • Bjr ! L’opération fonctionne. Mais je tente avec des fichiers ayant des caractères russes ou hébreux. Du coup là non ^^ Que faire?
      J’ai les langues installée sur PC windows10, les utilise dans les logiciels normalement, et ais même essayer la commande /a /o:gen > liste.doc pour que ça ressorte sur word. Mais le résultat est mauvais, je n’ai que des ???? à la place des lettres russes.

      Reply
  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.

    Reply
  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 ?

    Reply
  6. @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é.

    Reply
  7. 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é !

    Reply
  8. 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 ;)

    Reply
  9. Salut !

    Pour lister plus efficacement et sans problème d’accentuation un répertoire je vous propose d’essayer mon application Windows “Lister un dossier“.

    Cela fait un petit peu plus d’un mois que je travail dessus et je l’améliore en permanence mais c’est mon tout premier projet de programmation alors n’hésitez pas à me signaler des bugs si vous en voyez !

    ++

    Reply

Opinions