Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

suppression des fichiers

17 réponses
Avatar
programmation
Bonjour,

Je voulais supprimer totalement =E0 partir de mon programme C sous
windows tous les fichiers textes temporaires dans mon r=E9pertoire de
travail et qui sont cr=E9es pendant l'ex=E9cution du programme .

Existe-t- elle une fonction ou une proc=E9dure permettant la suppression
totale de ces fichiers texte ?

Merci.

7 réponses

1 2
Avatar
Laurent
"programmation" a écrit dans le message de news:


Mais,cette fonction DeleteFile ne supprime rien :(



Et ça t'étonne ?

il y a la fonction 'FindFirstFile' mais je n'arrive pas à bien


utiliser.
Pouvez me donner un exemple de cette fonction ?



Bertand et Christian t'ont donné 2 méthodes différentes.
Tu n'arrives pas à faire copier-coller ?
Avatar
programmation
> Bertand et Christian t'ont donné 2 méthodes différentes.
Tu n'arrives pas à faire copier-coller ?



Mon besoin est de supprimer des fichiers textes et non pas de
répertoires.

Bonjour,
Je mis le code C suivant comme un nouveau programme C sous windows
avec Visual studio 2008:

#include <Windows.h>

int main(int argc, char* argv[])

{

char szPath[256];

char szSearch[256];

strcpy(szPath,"C:copcop");

strcpy(szSearch,szPath);

strcat(szSearch,"*.txt");

WIN32_FIND_DATA wfd;

HANDLE hfl = FindFirstFile(szSearch, &wfd);

if(hfl == INVALID_HANDLE_VALUE) return 0;

do {


char szFile[256];

strcpy(szFile,szPath);


strcat(szFile,wfd.cFileName);

DeleteFile(szFile);


} while(FindNextFile(hfl, &wfd));

FindClose(hfl);

return 0;

}


Après la compilation, j'obtiens 14 erreurs et 9 avertissements :


1>------ Début de la génération : Projet : cop, Configuration :
Debug Win32 ------
1>Compilation en cours...
1>copie.c
1>c:copcopcopie.c(59) : warning C4996: 'strcpy': This function
or variable may be unsafe. Consider using strcpy_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:program filesmicrosoft visual studio 9.0vcincludestring.h
(74) : voir la déclaration de 'strcpy'
1>c:copcopcopie.c(61) : warning C4996: 'strcpy': This function
or variable may be unsafe. Consider using strcpy_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:program filesmicrosoft visual studio 9.0vcincludestring.h
(74) : voir la déclaration de 'strcpy'
1>c:copcopcopie.c(63) : warning C4996: 'strcat': This function
or variable may be unsafe. Consider using strcat_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:program filesmicrosoft visual studio 9.0vcincludestring.h
(79) : voir la déclaration de 'strcat'
1>c:copcopcopie.c(65) : error C2275: 'WIN32_FIND_DATA' :
utilisation non conforme de ce type comme expression
1> c:program filesmicrosoft sdkswindowsv6.0aincludewinbase.h
(6154) : voir la déclaration de 'WIN32_FIND_DATA'
1>c:copcopcopie.c(65) : error C2146: erreur de syntaxe :
absence de ';' avant l'identificateur 'wfd'
1>c:copcopcopie.c(65) : error C2065: 'wfd' : identificateur non
déclaré
1>c:copcopcopie.c(67) : error C2275: 'HANDLE' : utilisation non
conforme de ce type comme expression
1> c:program filesmicrosoft sdkswindowsv6.0aincludewinnt.h
(402) : voir la déclaration de 'HANDLE'
1>c:copcopcopie.c(67) : error C2146: erreur de syntaxe :
absence de ';' avant l'identificateur 'hfl'
1>c:copcopcopie.c(67) : error C2065: 'hfl' : identificateur non
déclaré
1>c:copcopcopie.c(67) : error C2065: 'wfd' : identificateur non
déclaré
1>c:copcopcopie.c(67) : warning C4133: 'fonction' : types
incompatibles - de 'int *' à 'LPWIN32_FIND_DATAA'
1>c:copcopcopie.c(67) : warning C4047: '=' : 'int' diffère de
'HANDLE' dans les niveaux d'indirection
1>c:copcopcopie.c(69) : error C2065: 'hfl' : identificateur non
déclaré
1>c:copcopcopie.c(69) : warning C4047: '==' : 'int' diffère de
'HANDLE' dans les niveaux d'indirection
1>c:copcopcopie.c(77) : error C2065: 'wfd' : identificateur non
déclaré
1>c:copcopcopie.c(77) : error C2224: la partie gauche de
'.cFileName' doit avoir un type struct/union
1>c:copcopcopie.c(77) : error C2198: 'strcat' : pas assez
d'arguments pour un appel
1>c:copcopcopie.c(81) : error C2065: 'hfl' : identificateur non
déclaré
1>c:copcopcopie.c(81) : warning C4022: 'FindNextFileA' :
incompatibilité de pointeur pour le paramètre réel 1
1>c:copcopcopie.c(81) : error C2065: 'wfd' : identificateur non
déclaré
1>c:copcopcopie.c(81) : warning C4133: 'fonction' : types
incompatibles - de 'int *' à 'LPWIN32_FIND_DATAA'
1>c:copcopcopie.c(83) : error C2065: 'hfl' : identificateur non
déclaré
1>c:copcopcopie.c(83) : warning C4022: 'FindClose' :
incompatibilité de pointeur pour le paramètre réel 1
1>Le journal de génération a été enregistré à l'emplacement
"file://c:copcopDebugBuildLog.htm"
1>cop - 14 erreur(s), 9 avertissement(s)
========== Génération : 0 a réussi, 1 a éch oué, 0 mis à jour, 0 a
été ignoré ==========

Pouvez vous m'aider à bien utiliser ce code ?

Merci.
Avatar
Christian ASTOR
On 22 sep, 10:08, programmation wrote:

Mon besoin est de supprimer des fichiers textes et non pas de
répertoires.



Et le flag FOF_FILESONLY, à quoi peut-il bien servir ?!!
Avatar
Bertrand Lenoir-Welter
Ce code compile sans erreur sur Borland (juste deux warnings à cause des
argc/argv non utilisés). J'ai pas exécuté, mais à première vue, ça
devrait marcher.
Avatar
programmation
On 22 sep, 09:52, Bertrand Lenoir-Welter <bertrand-dot-2008-at-galaad-
dot-net> wrote:
Ce code compile sans erreur sur Borland (juste deux warnings à cause de s
argc/argv non utilisés). J'ai pas exécuté, mais à première vue, ça
devrait marcher.



Merci beaucoup çà marche.
Il suffit de déclarer les variables en tête de fonction 'main'.

Voici le nouveau code:
#include <stdio.h>
#include <windows.h>

int main()
{

char szPath[MAX_PATH]; char szSearch[MAX_PATH];

char szFile[MAX_PATH]; WIN32_FIND_DATA wfd; HANDLE hfl;


strcpy(szPath,"C:copcop");

strcpy(szSearch,szPath);

strcat(szSearch,"*.txt");


hfl = FindFirstFile(szSearch, &wfd);

if(hfl == INVALID_HANDLE_VALUE) return 0;

do {

strcpy(szFile,szPath);

strcat(szFile,wfd.cFileName);

printf("Deleting %sn",szFile);

DeleteFile(szFile);

} while(FindNextFile(hfl, &wfd));

FindClose(hfl);

return 0;

}


Comment adapter cette solution pour supprimer seulement des fichiers
textes qui vérifient la condition suivante:
si je connais le nom et l'extension mais pas le nombre de fichier par
exemple:
test1.txt
test2.txt
......
....
testn.txt

ici je ne connais pas en avance le nombre car ces fichiers sont
générés par le programme .
Comment supprimer ces fichiers qui portent dans leur préfixe le nom
'test' suivi d'un numéro ?

Merci
Avatar
Christian ASTOR
On 22 sep, 23:00, programmation wrote:

Comment adapter cette solution pour supprimer seulement des fichiers text es qui vérifient la condition suivante:
si je connais le nom et l'extension mais pas le nombre de fichier par
exemple:
test1.txt
test2.txt



SHFileOperation() (bis)
Avatar
Christian ASTOR
On 22 sep, 23:00, programmation wrote:

Comment supprimer ces fichiers qui portent dans leur préfixe le nom
'test' suivi d'un numéro ?



B-A-BA : test*.txt
1 2