שאלה | איך למחוק קבצים מתקייה במחשב לפי תנאי מסוים באקסס?
-
שלום וברכה
אני מנסה לכתוב קוד שימחוק לי קבצים מתקייה מסיומת, אבל רק קבצים שבשם הקובץ התאריך הוא למעלה מ 60 יום אחורה.
אני כתבתי ככה:
Kill CurrentProject.Path & "\accesstopdf" & "\" & " " & Format(Date - 30, "dd.mm.yy") & ".pdf"
אך לא מצליח לגרום לו לעבור על כל התקייה בלולאה, לזהות את הקבצים שבשם יש תאריך יותר מ 60 יום אחורה בפורמט PDF
אודה לעזרה
תודה
-
@חייםיודלביץ האם אתה מוכרח להשתמש בתאריך שמוטמע בשם הקובץ, או שאפשר להסתמך על התאריך של יצירת הקובץ? האפשרות השנייה יותר פשוטה.
-
@OdedDvir אמר בשאלה | איך למחוק קבצים מתקייה במחשב לפי תנאי מסוים באקסס?:
@חייםיודלביץ האם אתה מוכרח להשתמש בתאריך שמוטמע בשם הקובץ, או שאפשר להסתמך על התאריך של יצירת הקובץ? האפשרות השנייה יותר פשוטה.
תאריך יצירת הקובץ זה גם אפשרי
תודה
-
@חייםיודלביץ הנה דוגמא (תשתמש בזהירות...)
Private Sub DeleteOldFilesInFolder(folderPath As String, daysAgo As Integer) 'Deletes all the files in folderPath which were not modified in the last daysAgo days Dim fsoLib As Object Dim folder As Object Dim file As Object Dim oldDate As Date oldDate = DateAdd("d", -daysAgo, Now()) 'Assert trailing backslash If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\" 'Set a reference to Scripting.FileSystemObject library (late binding) Set fsoLib = CreateObject("Scripting.FileSystemObject") 'Set a reference to the folder in path Set folder = fsoLib.GetFolder(folderPath) 'Loop through each file in folder For Each file In folder.Files If (file.DateLastModified < oldDate) Then Debug.Print file.Name & " is too old, goodbye." Kill folderPath & file.Name End If Next 'Garbage collection just in case... Set fsoLib = Nothing Set folder = Nothing Set file = Nothing End Sub Private Sub Test() DeleteOldFilesInFolder "D:\Temp", 60 End Sub
-
@OdedDvir יש דרך להכניס שיזהה לפי מילה קבועה בשם הקובץ לדוגמא "תעודה"
אני פשוט רוצה למנוע טעות אם מישהו יכניס לשם קובץ ואז זה ימחק לו רק לפי תאריך יצירת הקובץ.@OdedDvir אמר בשאלה | איך למחוק קבצים מתקייה במחשב לפי תנאי מסוים באקסס?:
If (file.DateLastModified < oldDate) Then
Debug.Print file.Name & " is too old, goodbye."
Kill folderPath & file.Name
End Ifכמו"כ בקוד הנ"ל אם אין קבצים בתקייה הוא מוחק את כל התקייה?
תודה!
-
@חייםיודלביץ אמר בשאלה | איך למחוק קבצים מתקייה במחשב לפי תנאי מסוים באקסס?:
יש דרך להכניס שיזהה לפי מילה קבועה בשם הקובץ לדוגמא "תעודה"
כן, אתה יכול לבדוק בלולאה גם את שם הקובץ:
If (InStr(1, File.Name, "תעודה"))
אם אין קבצים בתקייה הוא מוחק את כל התקייה?
לא.
-
@OdedDvir אמר בשאלה | איך למחוק קבצים מתקייה במחשב לפי תנאי מסוים באקסס?:
If (InStr(1, File.Name, "תעודה"))
שלבתי את זה ככה בקוד, זה בסדר?
For Each file In folder.Files If (InStr(1, file.Name, "תעודה")) Then If (file.DateLastModified < oldDate) Then Debug.Print file.Name & " is too old, goodbye." Kill folderPath & file.Name End If End If
בפונקציה כתבתי ככה:
Dim ssfile As String ssfile = CurrentProject.Path & "\accesstopdf" & "\" DeleteOldFilesInFolder ssfile, 1
חשוב לי לדעת שזה בסדר בגלל ההשלכות של הפעולה.
-
@OdedDvir אשמח אם תוכל לכתוב לי האם הקוד ששלבתי נכון
אין לי דרך לבדוק את זה, כי אין לי קבצים ישנים, וזה פעולה רגישה בתוכנה וחשוב לי להיות בטוח שזה תקין.
תודה רבה
-
- הקוד נראה נכון
- לא מומלץ שתסמוך על מישהו אחר, בלי לבדוק בעצמך. פשוט תעתיק קובץ ישן כלשהו לתיקיה ותשנה לו את השם כך שיתאים לתנאי.