Deleting files in a directory

G

Guest

I have a process that creates csv files in a directory, however a byproduct
is an identical log file, e.g. 5C015000. If you were to rename the file with
a .xls extension, it would be exactly the same as the csv that I'm saving. It
has no extension and is file type "File".

If the directory were C:\GLPVC\ what code can I use to loop through all
files in the directory (there may be hundreds) and delete all files that
begin with a numeric character or whose file type is "File"?
 
J

JohnELaw

I have a process that creates csv files in a directory, however a byproduct
is an identical log file, e.g. 5C015000. If you were to rename the file with
a .xls extension, it would be exactly the same as the csv that I'm saving. It
has no extension and is file type "File".

If the directory were C:\GLPVC\ what code can I use to loop through all
files in the directory (there may be hundreds) and delete all files that
begin with a numeric character or whose file type is "File"?

Here try this...

Function DeleteFiles(MyWildcard As String) As Long
Dim Match
Match = Dir(MyWildcard)
If Len(Match) > 0 Then
Do
MsgBox Match
Match = Dir
Loop Until Len(Match) = 0
End If
End Function

You will call it with a line that looks like...

Call DeleteFiles("C:\My Docs\*.*")

Now, instead of the line that reads...

MsgBox Match

....put a line that reads...

Kill Match

You would effectively be going through the folder one file at a time
and looking for a file size greater than 0. Any that match this
criteria get the ax. You can further make this dynamic by adding rules
to this code...
 
J

JohnELaw

Here try this...

Function DeleteFiles(MyWildcard As String) As Long
Dim Match
Match = Dir(MyWildcard)
If Len(Match) > 0 Then
Do
MsgBox Match
Match = Dir
Loop Until Len(Match) = 0
End If
End Function

You will call it with a line that looks like...

Call DeleteFiles("C:\My Docs\*.*")

Now, instead of the line that reads...

MsgBox Match

...put a line that reads...

Kill Match

You would effectively be going through the folder one file at a time
and looking for a file size greater than 0. Any that match this
criteria get the ax. You can further make this dynamic by adding rules
to this code...

Actually, you can remove the part that says as long...then you could
use it like...

Call DeleteFiles("C:\My Folder\*.*")
 
G

Guest

You can also use the FileSystemObject object for that.

Loop through the files in C:\GLPVC\ , check if the file type is "Type" and
the first character in the file name is numeric, and, if so, delete the file:

Sub deleteFiles()

fPath = "C:\GLPVC\"

Set fso = CreateObject _
("Scripting.FileSystemObject")

Set folder = fso.GetFolder(fPath)

For Each file In folder.Files

If file.Type = "File" And _
IsNumeric(Left(file.Name, 1)) Then
Debug.Print file.Name
'file.Delete
End If

Next

Set folder = Nothing
Set fso = Nothing

End Sub


Instead of checking the file type, you can delete all the files without
extension:


Sub deleteFiles1()

fPath = "C:\GLPVC\"

Set fso = CreateObject _
("Scripting.FileSystemObject")

Set folder = fso.GetFolder(fPath)

For Each file In folder.Files

If fso.GetExtensionName(file) = "" And _
IsNumeric(Left(file.Name, 1)) Then
Debug.Print file.Name
'file.Delete
End If

Next

Set folder = Nothing
Set fso = Nothing

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top