ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Deleting files in a directory (https://www.excelbanter.com/excel-programming/390939-deleting-files-directory.html)

Sam

Deleting files in a directory
 
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"?

JohnELaw

Deleting files in a directory
 
On Jun 7, 3:15 pm, Sam wrote:
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...


JohnELaw

Deleting files in a directory
 
On Jun 7, 3:34 pm, JohnELaw wrote:
On Jun 7, 3:15 pm, Sam wrote:

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...


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

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


urkec

Deleting files in a directory
 
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




--
urkec


"Sam" wrote:

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"?



All times are GMT +1. The time now is 09:07 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com