|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
VB, cancellare file vecchi?
ciao
dovrei cancellare periodicamente dei file da una cartella, ad esempio tutti quelli che hanno più di due settimane, ho trovato questo script che però cancella le dir... qualcuno gentilmente saprebbe modificarlo in modo che cancelli i file? io non so programmare... grazie a tutti ![]() ![]()
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 611
|
Dim i, fso, f, f1,f2, sf, BasePath, CalcResult, fNameArray()
BasePath = "D:\Reports" Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(BasePath) Set sf = f.SubFolders For Each f1 in sf For Each f2 in f1.getFile 'Oppure una funzione simile,non ricordo CalcResult = DateDiff("d",f1.DateCreated,Now) if CalcResult > 2 then ReDim preserve fNameArray(i) fNameArray(i) = f1.Name i = i + 1 end if Next For Each fName in fNameArray FSO.DeleteFile(BasePath & "\" & fName) Next |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
grazie, ma mi da un errore "previsto next"
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Questo che ho appena fatto e provato, funziona:
Codice:
' ATTENZIONE CHE I FILE SARANNO CANCELLATI DEFINITIVAMENTE ' NON ANDRANNO NEL CESTINO!!! ' directory principale (MODIFICARE IL PERCORSO) path = "c:\AAA" ' cancella file più vecchi di 7 giorni (MODIFICARE IL N°) killdate = date() - 7 arFiles = Array() set fso = createobject("scripting.filesystemobject") ' sub che cancella i file; il 4° parametro indica se analizzare anche le sottodirectory ' se SI allora scrivere true, se NO allora scrivere false SelectFiles path, killdate, arFiles, true nDeleted = 0 for n = 0 to ubound(arFiles) on error resume next arFiles(n).delete true if err.number <> 0 then wscript.echo "Impossibile cancellare: " & arFiles(n).path else nDeleted = nDeleted + 1 end if on error goto 0 next msgbox nDeleted & " di " & ubound(arFiles)+1 & " file vecchi cancellati" sub SelectFiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders) on error resume next set folder = fso.getfolder(sPath) set files = folder.files for each file in files dtlastmodified = null on error resume Next dtlastmodified = file.datelastmodified on error goto 0 if not isnull(dtlastmodified) Then if dtlastmodified < vKillDate then count = ubound(arFilesToKill) + 1 redim preserve arFilesToKill(count) set arFilesToKill(count) = file end if end if next if bIncludeSubFolders then for each fldr in folder.subfolders SelectFiles fldr.path,vKillDate,arFilesToKill,true next end if end sub Salva il file come .vbs ...
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Quote:
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
Quote:
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Basta cancellare questa riga:
Codice:
msgbox nDeleted & " di " & ubound(arFiles)+1 & " file vecchi cancellati" Codice:
if err.number <> 0 then wscript.echo "Impossibile cancellare: " & arFiles(n).path else nDeleted = nDeleted + 1 end if
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino Ultima modifica di mynos79 : 19-06-2006 alle 11:46. |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
Quote:
![]() ancora grazie mille e a buon rendere ![]()
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
volevo utilizzare un singolo script da utilizzare su più
directory ma aggiungere un secondo percorso non funziona.... tipo path = "c:\AAA" path = "c:\BBB" esegue l'operazione solo sulla dir BBB... è normale?
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
E' normale
![]() ![]() ![]() In quanto prima assegni alla variabile path la stringa "C:\AAA" e poi le riassegni la stringa C:\BBB ... in pratica gli sovrascrivi il valore e quindi lui considera solo il secondo. Per passare più directory bisogna modificare il programma ...
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
Quote:
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Codice:
' ATTENZIONE CHE I FILE SARANNO CANCELLATI DEFINITIVAMENTE ' NON ANDRANNO NEL CESTINO!!! dim path() ' cambiare il numero con il numero massimo di percorsi inseriti redim path(3) ' directory principale (MODIFICARE IL PERCORSO) e cambiare l'indice ' l'indice va da 0 al numero dei percorsi meno 1 path(0) = "c:\AAA" path(1) = "c:\BBB" path(2) = "c:\CCC" ' cancella file più vecchi di n giorni (MODIFICARE IL N°) killdate = date() - 7 arFiles = Array() set fso = createobject("scripting.filesystemobject") for each p in path ' cambiare il 4° parametro con 'true' o 'false' se si vuole o meno ' ciclare le sottocirectory SelectFiles p, killdate, arFiles, true for n = 0 to ubound(arFiles) on error resume next arFiles(n).delete true next next sub SelectFiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders) on error resume next set folder = fso.getfolder(sPath) set files = folder.files for each file in files dtlastmodified = null on error resume Next dtlastmodified = file.datelastmodified on error goto 0 if not isnull(dtlastmodified) Then if dtlastmodified < vKillDate then count = ubound(arFilesToKill) + 1 redim preserve arFilesToKill(count) set arFilesToKill(count) = file end if end if next if bIncludeSubFolders then for each fldr in folder.subfolders SelectFiles fldr.path,vKillDate,arFilesToKill,true next end if end sub Le righe da modificare stavolta sono queste: redim path(3) --> cambiare il 3 con il numero dei percorsi usati ... path(0) = "c:\AAA" --> cambiare sia il percorso tra virgolette che il numero tra parentesi (gli indici vanno da 0 a n-1) path(1) = "c:\BBB" path(2) = "c:\CCC" ... killdate = date() - 7 --> cambiare il 7 col numero dei giorni ... SelectFiles p, killdate, arFiles, true --> cambiare il true con true o false a seconda se si vuole controllare anche le varie sottodirectory
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Come vedi ho già tolto tutti i messaggi, anche quelli di errore visto che non ti servono.
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
ma sei troppo gentile!!! se passi da milano hai una birra offerta
![]()
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Eh eh
![]() ![]()
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Apr 2004
Città: Milano
Messaggi: 3620
|
Quote:
ciao Paolo ![]()
__________________
Nvidia Shield TV Xbox One X Intel Nuc10i7beh Google Home Hub QNAP HS-453DX Raspberry 4 + Allo Boss Master |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:16.