MS-Dos - Lister le contenu d'un répertoire dans un fichier

baissaoui Messages postés 497 Date d'inscription jeudi 2 septembre 2021 Statut Webmaster Dernière intervention 22 mars 2024 - 11 juil. 2022 à 15:36

Il peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers.

Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible d'envoyer la sortie d'une commande vers un fichier grâce à la redirection > :

dir c:\monrep > monfichier.txt

Si on souhaite lister plusieurs répertoires, il suffit de lancer une première fois la commande ci-dessus et utiliser, pour tous les répertoires suivants, la redirection >>, qui a pour effet de concaténer la sortie à la suite du fichier :

dir c:\monrep2 >> monfichier.txt

La méthode précédente donne une liste des fichiers d'un SEUL répertoire avec tous les détails, mais à l'inconvénient d'ajouter deux lignes de présentation du répertoire au début du résultat, et deux lignes cumulant la taille totale des fichiers et leur nombre à la fin.

Une autre commande donne la liste des fichiers avec un chemin complet et un parcours automatique des sous-répertoires, est :

dir /b /s c:\monrep > monfichier.txt

Comment ça marche, la redirection?
Comme vous avez déjà remarqué, dir affiche le contenu d'un répertoire sur l'écran. Le signe > signifie: "ce qui est à gauche du signe va être affiché/enregistré dans ce qui est a droite du signe".

Vous ne verrez rien à l'écran, parce que ce signe signifie de l'"afficher" dans un ficher texte plutôt que sur l'écran. Vous pouvez faire ceci avec n'importe quelle commande DOS (par exemple, mem > monfichier.txt va enregistrer des informations sur votre mémoire dans le fichier monfichier.txt). Pour imprimer directement, on peut rediriger la sortie du programme (stdout) vers une imprimante, par exemple, avec

dir > lpt1

ce qui enverra le contenu du répertoire courant à votre imprimante, qui l'imprimera (si elle est branchée sur votre port lpt1...).

>> est un opérateur spécial qui efface ce qui est sur le périphérique de sortie avant de l'afficher...

Autres liens

Tout savoir sur les commandes DOS
Créer des fichiers de commande en Batch
Qu'est-ce qu'un fichier batch ?