Supprimer tous les fichiers dans un répertoire vb6
Je me demandais si quelqu'un pourrait m'aider avec un vb6 fonction qui aurait pour effet de supprimer tous les fichiers dans un répertoire (à l'exclusion des sous-répertoires).
La rubrique d'aide dit "Dans Microsoft Windows, Tuer prend en charge l'utilisation de plusieurs caractères (*) et à un seul caractère (?) les caractères génériques pour spécifier plusieurs fichiers".
En aparté - je préfère éviter de Microsoft Scripting Runtime (y compris FileSystemObject). Dans mon expérience, il est parfois brisé sur les machines des utilisateurs, peut-être parce que leur service sont paranoïaque sur les virus.
J'ai toujours l'impression à compliquer les choses..je devrais l'avoir rappelé. Dans Access 2000, à l'aide de la "*.*" générique avec la commande Kill échouera si un fichier de ce répertoire est verrouillé (ou ouvert).
Dim oFs AsNew FileSystemObject
Dim oFolder As Folder
Dim oFile As File
If oFs.FolderExists(FolderSpec)ThenSet oFolder = oFs.GetFolder(FolderSpec)'caution!OnErrorResumeNextForEach oFile In oFolder.Files
oFile.Delete True'setting force to true will delete a read-only fileNext
DeleteAllFiles = oFolder.Files.Count =0EndIfEndFunction
J'obtiens une erreur "Type Défini par l'Utilisateur non défini", "Dim oFs Comme Nouveau FileSystemObject" C'est parce que vous aurez besoin d'ajouter la référence à l'objet FileSystemObject pour l'utiliser..je ne me souviens pas de la référence exacte de nom est que. "Pour utiliser FileSystemObject, vous devez sélectionner l'Exécution de Script Microsoft dans le Projet de la boîte de dialogue Références pour votre projet." Fonction: support.microsoft.com/kb/186118 Il n'est pas nécessaire de parcourir les fichiers. Le DeleteFile méthode de l'objet FileSystemObject accepte des caractères génériques.
Je n'ai pas testé tous les cas de figure, mais il devrait fonctionner. Il devrait supprimer tous les fichiers et si le fichier est verrouillé ou si vous n'avez pas accès, vous devriez obtenir l'Erreur 70 qui est pris et vous obtenez une Abandonner, Réessayer ou d'Ignorer la boîte.
Sub DeleteAllFilesInDir(ByVal pathName AsString)OnErrorGoTo errorHandler
Dim fileName AsStringIf Len(pathName)>0ThenIf Right(pathName,1)<>"\"Then pathName = pathName &"\"EndIf
fileName = Dir(pathName &"*")While Len(fileName)>0
Kill pathName & fileName
fileName = Dir()WendExitSub
errorHandler:If Err.Number =70ThenSelectCase MsgBox("Could not delete "& fileName &". Permission denied. File may be open by another user or otherwise locked.", vbAbortRetryIgnore,"Unable to Delete File")Case vbAbort:ExitSubCase vbIgnore:ResumeNextCase vbRetry:ResumeEndSelectElse
MsgBox "Error deleting file "& fileName &".", vbOKOnly Or vbCritical,"Error Deleting File"EndIfEndSub
+1 en sympathie parce que je ne pense pas que cela mérite -1. Bien que "Tuer" & chemin & "*.*" est nettement plus court.
Il semblerait que l'exécution de Scripts FileSystemObject de DeleteFile méthode prend également en charge les caractères génériques comme cela fonctionne pour moi:
Dim fs AsNew Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg",true
Cette approche a moins de contrôle que l'approche proposée par @Corazu, mais peuvent avoir une certaine utilité dans certains cas.
Une ligne en utilisant le VB6 déclaration Tuer
La rubrique d'aide dit "Dans Microsoft Windows, Tuer prend en charge l'utilisation de plusieurs caractères (*) et à un seul caractère (?) les caractères génériques pour spécifier plusieurs fichiers".
En aparté - je préfère éviter de Microsoft Scripting Runtime (y compris FileSystemObject). Dans mon expérience, il est parfois brisé sur les machines des utilisateurs, peut-être parce que leur service sont paranoïaque sur les virus.
Dans Access 2000, à l'aide de la
"*.*"
générique avec la commande Kill échouera si un fichier de ce répertoire est verrouillé (ou ouvert).OriginalL'auteur MarkJ
Je crois que cela devrait fonctionner:
C'est parce que vous aurez besoin d'ajouter la référence à l'objet FileSystemObject pour l'utiliser..je ne me souviens pas de la référence exacte de nom est que.
"Pour utiliser FileSystemObject, vous devez sélectionner l'Exécution de Script Microsoft dans le Projet de la boîte de dialogue Références pour votre projet." Fonction: support.microsoft.com/kb/186118
Il n'est pas nécessaire de parcourir les fichiers. Le DeleteFile méthode de l'objet FileSystemObject accepte des caractères génériques.
OriginalL'auteur Alex
Je n'ai pas testé tous les cas de figure, mais il devrait fonctionner. Il devrait supprimer tous les fichiers et si le fichier est verrouillé ou si vous n'avez pas accès, vous devriez obtenir l'Erreur 70 qui est pris et vous obtenez une Abandonner, Réessayer ou d'Ignorer la boîte.
OriginalL'auteur Corazu
Il semblerait que l'exécution de Scripts FileSystemObject de DeleteFile méthode prend également en charge les caractères génériques comme cela fonctionne pour moi:
Cette approche a moins de contrôle que l'approche proposée par @Corazu, mais peuvent avoir une certaine utilité dans certains cas.
OriginalL'auteur B H