[c++]lister puis suprimmé *.*

Résolu
Signaler
Messages postés
313
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
-
Messages postés
313
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
-
Bonjour

je vien de recupérer un code pour listé le contenu repertoire

#include <windows.h> // pour les 2 apis utilisés FindFirstFile() FindNextFile()
#include // cout<< et using namespace std;
using namespace std; // nouvelle norme C++


int main(void) {
 HANDLE hdlfff;


 LPCTSTR dir = "c:\\windows\\prefetch\\*.*";
 WIN32_FIND_DATA IpFindFileData;




hdlfff = FindFirstFile(dir,&IpFindFileData);
cout<null");         
}
FindClose(hdlfff);
}

Je voudrais suprimmé *.* du dossier prefetch mais ceci de marche pas pourquoi?

Pouriez-vous maidé

merci

Kevin

14 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
LPCTSTR dir = "c:\\*.txt";
...
sprintf(path,"%s\\%s",dir,IpFindFileData.cFileName);
Ça va donner c:\*.txtnomdufichier, c'est sûr que ça ne marchera pas.
Essais ceci:
char *strput (char *main, char *toadd, unsigned int p)
{
    main+=p;
    while(*toadd) *main++ = *toadd++;
    *main = 0;
    return main;
}

int main(int argc, char *argv[])
{
    WIN32_FIND_DATA IpFindFileData;
    HANDLE hdlfff;
    char dir[256] = "c:\\windows\\prefetch\\*.*";
    int size = strlen(dir)-3;

    hdlfff = FindFirstFile(dir,&IpFindFileData);
    strput(dir, IpFindFileData.cFileName, size);
    cout<]
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
int size = strlen(dir)-3;
Le -3, c'est la taille de l'extension (*.*). Si tu change l'extension et que ça taille change (*.txt -> 4), il faudra en tenir compte.

C++ (@++)<!--
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Bonjour,

IpFindFileData.cFileName contient uniquemant le nom du fichier, pour le supprimer, il faut créer le path en entier, c'est à dire dans ton cas :
path = dir + IpFindFileData.cFileName puis remove(path)
Messages postés
313
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
1
Merci mais jai fait comme sa

#include <windows.h> // pour les 2 apis utilisés FindFirstFile() FindNextFile()
#include // cout<< et using namespace std;
using namespace std; // nouvelle norme C++


int main(void) {
 HANDLE hdlfff;


 LPCTSTR dir = "c:\\windows\\prefetch\\*.*";
 WIN32_FIND_DATA IpFindFileData;




hdlfff = FindFirstFile(dir,&IpFindFileData);
cout<null");         
}
FindClose(hdlfff);
}
 
dev c++ me fait
17 C:\Dev-Cpp\hjkhjk.cpp `path' undeclared (first use this function) pourquoi?

Kevin
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Ok

char path[256];
sprintf(path,"%s\\%s",dir,IpFindFileData.cFileName);
remove(path);
Messages postés
313
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
1
Merci pour aide

mais le code compile mais me surpimme pas les fichier pourquoi ?

Kevin
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Perso pour supprimer les fichiers j'utilise la commande unlink(path) en incluant
#include <stdio.h>
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Essais de retirer le system("pause>null") à la fin de ta boucle et remplace remove par DeleteFile.

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Aussi, le premier fichier que tu trouvera ne sera jamais supprimer, car tu saute immédiatement au second. Il faut faire un DeleteFile sur le fichier trouvé par FindFirstFile aussi.

C++ (@++)<!--
Messages postés
313
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
1
Merci pour vos reponse

Jejeland ===>20 C:\Dev-Cpp\hjkhjk.cpp `unlink' undeclared (first use this function)
jai bien inclu #include <stdio.h>

SAKingdom jai mis jai suivie te instruction mais sa ne marche pas sa ne supprimme aucun fichier de la chaine pourquoi??

Kevin
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
Renvoie le code.

C++ (@++)<!--
Messages postés
313
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
1
#include <windows.h> // pour les 2 apis utilisés FindFirstFile() FindNextFile()
#include
#include <stdio.h> // cout<< et using namespace std;
using namespace std; // nouvelle norme C++


int main(void) {
 HANDLE hdlfff;


 LPCTSTR dir = "c:\\*.txt";
 WIN32_FIND_DATA IpFindFileData;




hdlfff = FindFirstFile(dir,&IpFindFileData);
cout<<IpFindFileData.cFileName<<"\n";


//Tant que le prochain fichier n'est pas égale a 0
while (FindNextFile(hdlfff,&IpFindFileData)) {
char path[256];
sprintf(path,"%s\\%s",dir,IpFindFileData.cFileName);
DeleteFile(path);
cout<<IpFindFileData.cFileName<<"\n";


        
}
FindClose(hdlfff);
}
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
En fait lorsque tu  crée le path il faut enlever évidement de la chaine dir le \\*.*"
Messages postés
313
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
1
Mercii iiiiiiiiiiiiiiiii pour votre aide

le code  SAKingdom marche nikel  pour l'info unlink et dans #include

Encore merci pour votre aide

Kevin

vous pouvais faire un tour sur http://www.cppfrance.com/infomsg_FOCUS-TRANSPRENCE-REGLABLE-CPLUSPLUS_923659.aspx pour maidé merci