Obtenir dans un fichier le contenu d'un dossier windows

Description

Ce petit programme portable permet de capter dans un fichier le contenu d'un dossier Windows. Le mode d'emploi est le suivant : on installe dans le dossier concerné une copie du programme listedir.exe et on le lance. En réponse, on obtient aussitôt dans ce dossier un fichier listedir.txt avec la liste des fichiers et des sous-dossiers qui y sont présents. C'est utile pour connaître la taille exacte de chaque fichier. C'est utile aussi pour reprendre ensuite la liste des fichiers quand on en a besoin, par exemple, pour rédiger une documentation. Il y a des solutions pour obtenir un résultat semblable en modifiant l'explorateur de fichiers, mais l'avantage de la solution présente est de ne rien changer dans le système Windows ni dans la base de registre.

Source / Exemple :


#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
int main() {
// On capte l'information brute dans un fichier temporaire
    system("dir /O:GN *.* > listetempdir.txt");
// On va corriger les caractères ASCII OEM en ASCII ANSI
    std::ifstream ifs("listetempdir.txt");
    std::ofstream ofs("listedir.txt");
    std::string s;
    while (std::getline(ifs, s)) {
        char *buf;
        buf = new char[s.size()+1];
        OemToChar(s.c_str(), buf); 
        s = buf;
// Et on va effacer du résultat les lignes dues aux fichiers ajoutés
        bool ok;
        ok = true;                          
        if(strstr(buf, "listedir.exe")) ok = false;
        if(strstr(buf, "listetempdir.txt")) ok = false;
// L'instruction suivante sert à effacer la ligne dans laquelle
// est normalement affiché le nombre de fichiers de ce dossier.
// Mais cela ne fonctionne que pour un Windows en français.
        if(strstr(buf, "fichier(s)")) ok = false;
// on écrit le fichier résultat : listedir.txt
        if(ok) ofs << s << std::endl;
        delete [] buf;
    }
    ifs.close();
    ofs.close();
    system("del listetempdir.txt");
    return 0;
}

Conclusion :


Bienvenue à tout commentaire éventuel.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.