Precedente :: Successivo |
Autore |
Messaggio |
GrayWolf Dio maturo


Registrato: 03/07/05 17:24 Messaggi: 2325 Residenza: ... come frontiera i confini del mondo...
|
Inviato: 28 Ago 2008 12:14 Oggetto: |
|
|
tabac ha scritto: | Ancora una domanda.
Ma se io oltre ai files volessi anche cancellare delle sottodirectory presenti nella directory specificata seguendo sempre la stessa logica? |
ecco qua
Codice: |
' VB Script Document
'************************************************************
'* CANCELLAZIONE SELETTIVA DI FILES
'* CON DATA INFERIORE A QUELLA DESIDERATA
'************************************************************
option explicit
dim objArgs
dim oFSO
dim oFolder
dim oFiles
dim oFile
'* JK 28.8.2008 >>>>>>>>>>>>>>>>>
dim oSubFolders
dim oSubFolder
'* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
dim sList
dim sNomeCartella
dim sNomeFile
dim sData
dim sTmp
dim sMask
dim sInput
dim sGiorniNotDelete
dim sDel
dim sConf
dim sArg
dim avList
dim avDel
dim i
dim a
dim bDelSubDir
dim sMsg
dim lIco
dim sTit
'* -------------------------------------------------------------
'* INTERVENTO:
'*
'* impostare i campi sData con i valori occorrenti
'* esempio:
'* sData = now imposta la data del giorno
'* sData = "1/9/2006" imposta il primo settembre
'*
'* importante: se si esprime una data DEVE essere
'* nella forma gg/mm/aaaa e racchiusa fra apici doppi
sData = now
'* impostare il numero di giorni PRIMA dei quali lo script
'* deve effettuare la cancellazione
'* esempio:
'*
'* con sData = "1/9/2006" e sGiorniNotDelete = 2
'* saranno cancellati tutti quei files che come ultima modifica
'* o creazione hanno data antecedente al 30/8/2006
sGiorniNotDelete = 0
'* JK 28.8.2008 >>>>>>>>>>>>>>>>>
'*
'* impostare a true se si desidera che siano cancellate anche le
'* sottocartelle [presenti nella cartella indicata] con TUTTO
'* il loro contenuto.
'* impostare a false se le sottocartelle devono rimanere e si
'* desidera la sola cancella zione dei files.
'*
'* ATTENZIONE:
'* .1 i contenuti delle sottocartelle NON saranno visualizzati
'* .2 la cancellazione avverrà solo se corrisponde ai criteri di
'* cancellazione: data di creazione - numero di giorni [impo-
'* stato in sGiorniNotDelete]
bDelSubDir = true
'*
'*
'* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
'* -------------------------------------------------------------
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = Wscript.Arguments
sInput = ""
if objargs.count > 0 then
for a = 0 to objargs.count -1
if a = 0 then
sInput = sInput & objargs(a)
else
sInput = sInput & " " & objargs(a)
end if
next
else
do
sInput = inputbox("Immettere il nome" _
& vblf _
& " della cartella con i files da cancellare" _
,"RICHIESTA" _
,sInput _
)
if len(trim(sInput)) = 0 then
select case msgbox("premuto annulla o risposta vuota " _
& vblf _
& "chiudere il programma?" _
,vbquestion+vbYesNo _
, "RICHIESTA" _
)
case vbYes
WScript.quit
case vbNo
'* ripete la richiesta
end select
end if
loop until len(trim(sInput)) > 0
end if
sNomeCartella = sInput
if not right(sNomeCartella,1) = "\" then
sNomeCartella = sNomeCartella & "\"
end if
sList = ListaFiles(sNomeCartella)
avList = split(sList,vblf)
sTmp = ""
sDel = ""
sConf = day(sData) _
& "/" _
& month(sData) _
& "/" _
& year(sData)
for i = 0 to ubound(avList)
if len(avList(i)) > 0 then
sArg = left(avList(i),instr(AvList(i), chr(160))-1)
if datediff("d",sArg , sConf) >= sGiorniNotDelete then
sTmp = sTmp _
& right(avList(i),len(avList(i))-instrrev(AvList(i),chr(160))) _
& " (" _
& sArg _
& ")" _
& vblf
sDel = sDel _
& sNomeCartella _
& right(avList(i),len(avList(i))-instrrev(AvList(i),chr(160))) _
& vblf
end if
end if
next
'* -------------------------------------------------------------
'* INTERVENTO:
'*
'* se si desidera che lo script elenchi i files che saranno
'* cancellati chiedendo conferma dell'operazione,
'* eliminare l'apice a inizio riga alle istruzioni sottostanti
'* comprese fra le due righe di trattini
'* -------------------------------------------------------------
' select case msgbox("Files da cancellare:" _
' & string(2,vblf) _
' & sTmp _
' & string(2,vblf) _
' & "Procedo alla cancellazione ?" _
' ,vbYesNo + VbQuestion _
' ,"RICHIESTA" _
' )
' case vbYes
' '* prosegue e cancella
' case vbNo
' '* esce
' WScript.quit
' end select
'* -------------------------------------------------------------
'*
avDel = split(sDel,vblf)
if ubound(avDel) = -1 then
sMsg = "non ci sono files da cancellare"
lIco = vbInformation
sTit = "INFO"
msgbox sMsg,lIco,sTit
else
for i = 0 to ubound(avDel)
if len(avDel(i)) > 0 then
oFSO.deletefile(avDel(i))
end if
next
end if
'* JK 28.8.2008 >>>>>>>>>>>>>>>>>
if bDelSubDir then
sList = ListaSubDirs(sNomeCartella)
avList = split(sList,vblf)
sTmp = ""
sDel = ""
sConf = day(sData) _
& "/" _
& month(sData) _
& "/" _
& year(sData)
for i = 0 to ubound(avList)
if len(avList(i)) > 0 then
sArg = left(avList(i),instr(AvList(i), chr(160))-1)
if datediff("d",sArg , sConf) >= sGiorniNotDelete then
sTmp = sTmp _
& right(avList(i),len(avList(i))-instrrev(AvList(i),chr(160))) _
& " (" _
& sArg _
& ")" _
& vblf
sDel = sDel _
& sNomeCartella _
& right(avList(i),len(avList(i))-instrrev(AvList(i),chr(160))) _
& vblf
end if
end if
next
'* -------------------------------------------------------------
'* INTERVENTO:
'*
'* se si desidera che lo script elenchi le sottocartelle che sa-
'* ranno cancellate, chiedendo conferma dell'operazione,
'* eliminare l'apice a inizio riga alle istruzioni sottostanti
'* comprese fra le due righe di trattini
'* -------------------------------------------------------------
' select case msgbox("Sottocartelle da cancellare:" _
' & string(2,vblf) _
' & sTmp _
' & string(2,vblf) _
' & "Procedo alla cancellazione ?" _
' ,vbYesNo + VbQuestion _
' ,"RICHIESTA" _
' )
' case vbYes
' '* prosegue e cancella
' case vbNo
' '* esce
' WScript.quit
' end select
'* -------------------------------------------------------------
avDel = split(sDel,vblf)
if ubound(avDel) = -1 then
sMsg = "non ci sono sottocartelle da cancellare"
lIco = vbInformation
sTit = "INFO"
msgbox sMsg,lIco,sTit
else
for i = 0 to ubound(avDel)
if len(avDel(i)) > 0 then
oFSO.deletefolder(avDel(i))
end if
next
end if
end if
'* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
WScript.quit
'* =========================================================
Function ListaFiles(folderspec)
Set oFolder = oFSO.GetFolder(folderspec)
Set oFiles = oFolder.Files
sTmp = ""
For Each oFile in oFiles
sTmp = sTmp _
& day(oFile.datelastmodified) _
& "/" _
& month(oFile.datelastmodified) _
& "/" _
& year(oFile.datelastmodified) _
& chr(160) _
& oFile.name
sTmp = sTmp _
& vblf
Next
ListaFiles = sTmp
End Function
'* =========================================================
'* JK 28.8.2008 >>>>>>>>>>>>>>>>>
'* =========================================================
Function ListaSubDirs(folderspec)
Set oFolder = oFSO.GetFolder(folderspec)
Set oSubFolders = oFolder.subFolders
sTmp = ""
For Each oSubFolder in oSubFolders
sTmp = sTmp _
& day(oSubFolder.datelastmodified) _
& "/" _
& month(oSubFolder.datelastmodified) _
& "/" _
& year(oSubFolder.datelastmodified) _
& chr(160) _
& oSubFolder.name
sTmp = sTmp _
& vblf
Next
ListaSubDirs = sTmp
End Function
'* =========================================================
'* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
lo script è lo stesso del precedente con l'aggiunta della possibilità di cancellazione anche delle sottocartelle nella cartella indicata
[vedi l'aggiunta nel primo punto di intervento]
per il resto valgono tutte le regole già indicate [che riporto per completezza]
Citazione: |
salvare il codice soprastante tramite copia incolla in un file con l'estensione .vbs
Lo script accetta come parametro la cartella in cui ci sono files da cancellare
NOTA: il nome della cartella può conenere spazi
Se non è comunicato il nome della cartella avviene la sua richiesta.
Metodi di funzionamento:
-- richiamo da DOS con o senza nome di cartella
-- richiamo da operazioni pianificate con il nome di cartella come parametro
-- creando uno shortcut (collegamento) dello script sul desktop e trascinando sopra di esso, la cartella interessata.
-- ponendo lo shortcut in esecuzione automatica con il nome di cartella come parametro
Personalizzazione:
vedere i punti in cui il commento è identificato dalla parola INTERVENTO
Funziona su Win200 e WinXP
vorrei precisare che i files sono cancellati definitivamente e non attraverso il cestino.
Non essendo più recuperabili consiglio di effettuare almeno la prima esecuzione su una cartella di prova.
Quando attivato definitivamente, controllare molto bene il nome della cartella passato come parametro.
|
consiglio vivamente due copia incolla:
uno per il codice
uno per la citazione [istruzioni]
una piccola precisazione:
con sGiorniNotDelete = 0 sono cancellati files e cartelle
create nello stesso giorno a cui fa riferimento il valore espresso in sData |
|
Top |
|
 |
tabac Eroe in grazia degli dei


Registrato: 10/04/07 14:19 Messaggi: 106
|
Inviato: 22 Ott 2008 09:59 Oggetto: |
|
|
caro graywolf
tutto mi funziona a meraviglia ma se volessi ancora una miglioria?
Impostare la cartella su cui lavorare a priori senza chiederlo all'utente ogni volta all'avvio del .vbs.
grazie 1000, anzi 100000 |
|
Top |
|
 |
tabac Eroe in grazia degli dei


Registrato: 10/04/07 14:19 Messaggi: 106
|
Inviato: 22 Ott 2008 11:56 Oggetto: |
|
|
Mi sono risposto da solo provandoci.
Ho anteposto l'apice a tutta la parte che richiede l'immissione della cartella ed ho forzato snomecartella alla cartella che mi serve
Scusa il disturbo gray wolf |
|
Top |
|
 |
GrayWolf Dio maturo


Registrato: 03/07/05 17:24 Messaggi: 2325 Residenza: ... come frontiera i confini del mondo...
|
Inviato: 23 Ott 2008 20:54 Oggetto: |
|
|
nessun disturbo, hombre
ma...
se vuoi rendere generalizzato lo script puoi fare in questo modo:
- togli l'apice alle righe di richiesta
- togli l'impostazione fissa della cartella
- crei un collegamento al .vbs con il nome della cartella voluta come parametro
esempio:
Codice: | u:\mia_cartella_script\mio_script.vbs cartella_da_trattare |
dove:
Citazione: | u: = unità nella quale mia_cartella_script
mia_cartella_script = cartella in cui risiede lo script
mio_script.vbs = nome che hai dato allo script
cartella_da_trattare = il percorso completo, comprensivo del nome della cartella che lo script deve trattare |
nelle operazioni pianificate o dallo start o dal desktop richiami il collegamento
Perché fare ciò?
così se tu avessi una seconda cartella [principale] sulla quale operare la cancellazione dei files vetusti e delle sottocartelle, ti basterebbe duplicare il collegamento modificando il parametro
PS il percorso o il nome della cartella da trattare può contenere spazi [e non c'è la necessità di racchiuderla fra apici doppi ] |
|
Top |
|
 |
n4b Mortale adepto

Registrato: 22/06/07 14:14 Messaggi: 31
|
Inviato: 06 Nov 2008 11:00 Oggetto: |
|
|
Bravi  |
|
Top |
|
 |
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|