Witam serdecznie,
Znalazłem na necie fajny skrypt który kasuje w wybranym folderze pliki starsze niż x dni:
Const strPath = "G:\doskasowania"
Dim objFSO
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
Call Search (strPath)
’ Comment out below line if you’d like to use this script in windows schedule task
WScript.Echo"Done."
Sub Search(str)
Dim objFolder, objSubFolder, objFile
Set objFolder = objFSO.GetFolder(str)
For Each objFile In objFolder.Files
' Use DateLastModified for modified date of a file
If objFile.DateCreated < (Now() - 30) Then
objFile.Delete(True)
End If
Next
For Each objSubFolder In objFolder.SubFolders
Search(objSubFolder.Path)
' Files have been deleted, now see if the folder is empty.
If (objSubFolder.Files.Count = 0) Then
objSubFolder.Delete True
End If
Next
End Sub
Ten skrypt kasuje zawartość katalogu na dysku G do skasowania i tu pojawia się moje pytanie, jak dodać kilka lokalizacji żeby nie tworzyć osobnych plików skryptów?
zrobisz (zdefiniujesz) tablicę z lokalizacjami do kasowania plików (zamiast Const strPath) i zamiast prostego wywołania Call Search (strPath) będzie to robione w pętli po zawartości zdefiniowanej tablicy.
Zmodyfikujesz funkcję Search (Sub Search(str)) tak by pobierała tablicę lokalizacji i sama w pętli ją przetwarzała.
Dziękuję za tak szybką odpowiedz
Fakt kod się zlewa z resztą tekstu.
Niestety jestem kompletnym laikiem jeśli chodzi o programowanie dlatego byłbym wdzięczny za podanie przykładowego skryptu na podstawie dowolnego rozwiązania podanego przez Pana.
Zamiast wiersza Const strPath = "G:\doskasowania"
robisz dwa z deklaracją ścieżek Dim strPath strPath = Array("G:\doskasowania","H:\doskasowania2","C:\Windows\TEMP")
oraz zamieniasz wiersz Call Search (strPath)
na następujący kod: For Loc = LBound(strPath) To UBound(strPath) Call Search (strPath(Loc)) Next
Nie testowałem (piszę z pamięci), ale powinno być OK.
jak się ręcznie by otoczyło znacznikiem bbcode to jest nawet kolorowanie
Const strPath = "D:\My Backups"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Call Search (strPath)
' Comment out below line if you'd like to use this script in windows schedule task
WScript.Echo"Done."
Sub Search(str)
Dim objFolder, objSubFolder, objFile
Set objFolder = objFSO.GetFolder(str)
For Each objFile In objFolder.Files
' Use DateLastModified for modified date of a file
If objFile.DateCreated < (Now() - 50) Then
objFile.Delete(True)
End If
Next
For Each objSubFolder In objFolder.SubFolders
Search(objSubFolder.Path)
' Files have been deleted, now see if the folder is empty.
If (objSubFolder.Files.Count = 0) Then
objSubFolder.Delete True
End If
Next
End Sub
REM Usun pliki starsze niz 30 dni
forfiles /p "C:\Users\%USERPROFILE%\Downloads" /s /m *.* /c "cmd /c Del @path" /d -30
Po rozbudowaniu o usuwanie katalogów w sumie też by mogłobyć.