OVH Cloud OVH Cloud

Suppression de fichier

8 réponses
Avatar
Romain
Bonjour,

Je cherche un moyen de supprimer un ensemble de fichier avec comme filtre
l'extension (par exemple : *.pdf, *.tmp...).
Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
Je suis confronté à un problème de performance, en effet ceci doit se faire
sur une arborescence importante ce qui prend plusieurs heures actuellement.
Je pense qu'en passant par des API les performance devrait être meilleur.
Par contre il ne faudrait pas que cela prenne trop de ressource sur les
machines.

Qu'en pensez-vous ?
Connaissez-vous des foncitons VB qui pourraient m'aider ?
Comment faire en sorte que le programme ne prenne pas trop de ressource ?

Merci par avance.

8 réponses

Avatar
X
Bonjour,

Kill "*.ext"
Kill "*.*"

Peut être que ça irait, en mettant le bon chemin, mais ça ou un batch, ce
doit être à peu près similaire...



"Romain" a écrit dans le message de news:

| Bonjour,
|
| Je cherche un moyen de supprimer un ensemble de fichier avec comme filtre
| l'extension (par exemple : *.pdf, *.tmp...).
| Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
| Je suis confronté à un problème de performance, en effet ceci doit se
faire
| sur une arborescence importante ce qui prend plusieurs heures
actuellement.
| Je pense qu'en passant par des API les performance devrait être meilleur.
| Par contre il ne faudrait pas que cela prenne trop de ressource sur les
| machines.
|
| Qu'en pensez-vous ?
| Connaissez-vous des foncitons VB qui pourraient m'aider ?
| Comment faire en sorte que le programme ne prenne pas trop de ressource ?
|
| Merci par avance.
Avatar
X
Re-Bonjour;,

Tiens, il semblerait qu'une API supprime les fichiers, un lien:

http://docvb.free.fr/apidetail.php?idapiV






"Romain" a écrit dans le message de news:

| Bonjour,
|
| Je cherche un moyen de supprimer un ensemble de fichier avec comme filtre
| l'extension (par exemple : *.pdf, *.tmp...).
| Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
| Je suis confronté à un problème de performance, en effet ceci doit se
faire
| sur une arborescence importante ce qui prend plusieurs heures
actuellement.
| Je pense qu'en passant par des API les performance devrait être meilleur.
| Par contre il ne faudrait pas que cela prenne trop de ressource sur les
| machines.
|
| Qu'en pensez-vous ?
| Connaissez-vous des foncitons VB qui pourraient m'aider ?
| Comment faire en sorte que le programme ne prenne pas trop de ressource ?
|
| Merci par avance.
Avatar
X
Tiens, encore :

http://bob.developpez.com/tutapiwin/article_39.php



"Romain" a écrit dans le message de news:

| Bonjour,
|
| Je cherche un moyen de supprimer un ensemble de fichier avec comme filtre
| l'extension (par exemple : *.pdf, *.tmp...).
| Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
| Je suis confronté à un problème de performance, en effet ceci doit se
faire
| sur une arborescence importante ce qui prend plusieurs heures
actuellement.
| Je pense qu'en passant par des API les performance devrait être meilleur.
| Par contre il ne faudrait pas que cela prenne trop de ressource sur les
| machines.
|
| Qu'en pensez-vous ?
| Connaissez-vous des foncitons VB qui pourraient m'aider ?
| Comment faire en sorte que le programme ne prenne pas trop de ressource ?
|
| Merci par avance.
Avatar
FL
Bonjour,

En plus précis !!!

Il y a une API permettant de supprimer les fichiers : DeleteFile
Il faut la déclarer : Public Declare Function DeleteFile Lib "kernel32"
Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Et l'utiliser : DeleteFile C:.....*.pdf

Pour ce qui est de l'arborescence, il faudra toujours faire une fonction
récursive. Tu peux utiliser les API FindFirstFile et FindNextFile et
FindClose. Elles sont plus performantes que l'objet FileSystemObject.
Regarde à cette adresse http://access.developpez.com/sources/?page=Fichiers
(sujet "Recherche de fichiers en spécifiant certaines extensions seulement")

@+


"Romain" a écrit dans le message de news:

Bonjour,

Je cherche un moyen de supprimer un ensemble de fichier avec comme filtre
l'extension (par exemple : *.pdf, *.tmp...).
Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
Je suis confronté à un problème de performance, en effet ceci doit se


faire
sur une arborescence importante ce qui prend plusieurs heures


actuellement.
Je pense qu'en passant par des API les performance devrait être meilleur.
Par contre il ne faudrait pas que cela prenne trop de ressource sur les
machines.

Qu'en pensez-vous ?
Connaissez-vous des foncitons VB qui pourraient m'aider ?
Comment faire en sorte que le programme ne prenne pas trop de ressource ?

Merci par avance.


Avatar
FL
Bonjour,


Ce lien renvoi vers la fonction GetTempFileName !!! Certes, dans cette page,
on vois la fonction DeleteFile, mais je ne pense pas que cette réponse
puisse être d'un grand secours à une personne novice en programmation. La
fonction DeleteFile a elle aussi droit à sa page perso ;)))

@+


"X" <.> a écrit dans le message de news:

Re-Bonjour;,

Tiens, il semblerait qu'une API supprime les fichiers, un lien:

http://docvb.free.fr/apidetail.php?idapiV






"Romain" a écrit dans le message de


news:

| Bonjour,
|
| Je cherche un moyen de supprimer un ensemble de fichier avec comme


filtre
| l'extension (par exemple : *.pdf, *.tmp...).
| Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
| Je suis confronté à un problème de performance, en effet ceci doit se
faire
| sur une arborescence importante ce qui prend plusieurs heures
actuellement.
| Je pense qu'en passant par des API les performance devrait être


meilleur.
| Par contre il ne faudrait pas que cela prenne trop de ressource sur les
| machines.
|
| Qu'en pensez-vous ?
| Connaissez-vous des foncitons VB qui pourraient m'aider ?
| Comment faire en sorte que le programme ne prenne pas trop de ressource


?
|
| Merci par avance.




Avatar
Romain
Bonjour FL,

C'est éxactement sur ces API que j'étais arrivé..
Ca parait être la meilleure solution en terme de rapidité, cependant pour
une grande arborescence, le programme risque de ne pas répondre, j'ai essayé
avec des doevents mais soit ça ralenti considérablement le programme, soit il
reste bloqué...
Ce que j'aimerais c'est faire un exe qu'on lance en ligne de commande qui
prend en paramètre un chemin (local ou réseau) et un filtre sur les fichiers
à supprimer.
Ainsi je lance les commandes que je veux et l'exe supprime beaucoup plus
vite qu'un del "*.toto /s"

Une idée pour ce problème de doevents ?

Merci



"FL" a écrit :

Bonjour,

En plus précis !!!

Il y a une API permettant de supprimer les fichiers : DeleteFile
Il faut la déclarer : Public Declare Function DeleteFile Lib "kernel32"
Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Et l'utiliser : DeleteFile C:.....*.pdf

Pour ce qui est de l'arborescence, il faudra toujours faire une fonction
récursive. Tu peux utiliser les API FindFirstFile et FindNextFile et
FindClose. Elles sont plus performantes que l'objet FileSystemObject.
Regarde à cette adresse http://access.developpez.com/sources/?page=Fichiers
(sujet "Recherche de fichiers en spécifiant certaines extensions seulement")

@+


"Romain" a écrit dans le message de news:

> Bonjour,
>
> Je cherche un moyen de supprimer un ensemble de fichier avec comme filtre
> l'extension (par exemple : *.pdf, *.tmp...).
> Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
> Je suis confronté à un problème de performance, en effet ceci doit se
faire
> sur une arborescence importante ce qui prend plusieurs heures
actuellement.
> Je pense qu'en passant par des API les performance devrait être meilleur.
> Par contre il ne faudrait pas que cela prenne trop de ressource sur les
> machines.
>
> Qu'en pensez-vous ?
> Connaissez-vous des foncitons VB qui pourraient m'aider ?
> Comment faire en sorte que le programme ne prenne pas trop de ressource ?
>
> Merci par avance.





Avatar
FL
Non pas trop d'idée pour le DoEvents. Il n'y a pas de miracle !
Mais ton idée est bonne : tu peux faire un exe à part que tu lances dans ton
application. La machine va ramer un peu (c'est normal, elle bosse), mais ton
application ne sera pas bloquée (elle n'attendra pas que les suppressions
soient finies). Si l'objectif est que ton application ne soit pas bloquée,
alors tu peux partir vers cette solution !

Pour info, pour récupérer ce qui est passé en ligne de commande, il fait
appeler la fonction Command au début de ton exe.


"Romain" a écrit dans le message de news:

Bonjour FL,

C'est éxactement sur ces API que j'étais arrivé..
Ca parait être la meilleure solution en terme de rapidité, cependant pour
une grande arborescence, le programme risque de ne pas répondre, j'ai


essayé
avec des doevents mais soit ça ralenti considérablement le programme, soit


il
reste bloqué...
Ce que j'aimerais c'est faire un exe qu'on lance en ligne de commande qui
prend en paramètre un chemin (local ou réseau) et un filtre sur les


fichiers
à supprimer.
Ainsi je lance les commandes que je veux et l'exe supprime beaucoup plus
vite qu'un del "*.toto /s"

Une idée pour ce problème de doevents ?

Merci



"FL" a écrit :

> Bonjour,
>
> En plus précis !!!
>
> Il y a une API permettant de supprimer les fichiers : DeleteFile
> Il faut la déclarer : Public Declare Function DeleteFile Lib "kernel32"
> Alias "DeleteFileA" (ByVal lpFileName As String) As Long
> Et l'utiliser : DeleteFile C:.....*.pdf
>
> Pour ce qui est de l'arborescence, il faudra toujours faire une fonction
> récursive. Tu peux utiliser les API FindFirstFile et FindNextFile et
> FindClose. Elles sont plus performantes que l'objet FileSystemObject.
> Regarde à cette adresse


http://access.developpez.com/sources/?page=Fichiers
> (sujet "Recherche de fichiers en spécifiant certaines extensions


seulement")
>
> @+
>
>
> "Romain" a écrit dans le message de


news:
>
> > Bonjour,
> >
> > Je cherche un moyen de supprimer un ensemble de fichier avec comme


filtre
> > l'extension (par exemple : *.pdf, *.tmp...).
> > Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
> > Je suis confronté à un problème de performance, en effet ceci doit se
> faire
> > sur une arborescence importante ce qui prend plusieurs heures
> actuellement.
> > Je pense qu'en passant par des API les performance devrait être


meilleur.
> > Par contre il ne faudrait pas que cela prenne trop de ressource sur


les
> > machines.
> >
> > Qu'en pensez-vous ?
> > Connaissez-vous des foncitons VB qui pourraient m'aider ?
> > Comment faire en sorte que le programme ne prenne pas trop de


ressource ?
> >
> > Merci par avance.
>
>
>


Avatar
Clive Lumb
Romain wrote:
Bonjour,

Je cherche un moyen de supprimer un ensemble de fichier avec comme
filtre l'extension (par exemple : *.pdf, *.tmp...).
Jusqu'à maintenant je faisais cela en VBS (fso) ou batch.
Je suis confronté à un problème de performance, en effet ceci doit se
faire sur une arborescence importante ce qui prend plusieurs heures
actuellement. Je pense qu'en passant par des API les performance
devrait être meilleur. Par contre il ne faudrait pas que cela prenne
trop de ressource sur les machines.

Qu'en pensez-vous ?
Connaissez-vous des foncitons VB qui pourraient m'aider ?
Comment faire en sorte que le programme ne prenne pas trop de
ressource ?

Merci par avance.



Le plus simple est un shell del "*.pdf"
Il y a des commutateurs pour explorer toute l'arboresence, pour effacer les
fichiers en lecture seule et pour ne pas demander des confirmations.
Voir l'aide de DEL
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributs]] noms
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributs]] noms

noms Spécifie une liste d'un ou plusieurs fichiers ou
répertoires.
Les caractères génériques peuvent être utilisés pour
supprimer plusieurs fichiers. Si un répertoire est spécifié,
tous les fichiers qu'il contient seront supprimés.

/P Demande une confirmation avant de supprimer un fichier.
/F Force la suppression de fichiers en lecture seule.
/S Supprime les fichiers dans tous les sous-répertoires.
/Q Pas de confirmation avant suppression avec car. génériques.
/A Suppression en fonction des attributs
attributs R Fichiers en lecture seule S Fichiers système
H Fichiers cachés A Fichiers prêts pour
archive
- Préfixe de négation

Si les extensions de commandes sont activées, DEL et ERASE sont modifiées
comme suit :
La sémantique d'affichage du commutateur /S est inversée en ce qu'elle
n'affiche que les fichiers supprimés, et pas ceux qui n'ont pas été trouvés.