Precedente :: Successivo |
Autore |
Messaggio |
ashasysley Mortale devoto
Registrato: 11/09/06 15:07 Messaggi: 7
|
Inviato: 11 Set 2006 16:26 Oggetto: [batch] deve eliminare file |
|
|
Salve a tutti. Sono nuova e ho trovato il Vs interessante forum da dove poter "rubare" informazioni.
Volevo una mano su:
Debbo creare un batch che partirà con un'operazione pianificata di windows.
Questo batch deve:
entrare dentro una cartella che contiene:
040101pippo.zip 01/01/2004
040101mamma.zip 01/01/2004
040101ciccia.zip 01/01/2004
041122pippo.zip 22/11/2004
041122mamma.zip 22/11/2004
041122ciccia.zip 22/11/2004
041225pippo.zip 25/12/2004
041225mamma.zip 25/12/2004
041225ciccia.zip 25/12/2004
che sono file di backup che vengono creati giornalmente.
Debbo: cancellare tutti quei file che hanno la data più vecchia.
nell'esempio verranno cancellati i file PIPPO - MAMMA e CICCIA della data 25/12/2004 e verranno mantenuti gli altri.
Mi sto incartando con le date e tutto il resto ... potete aiutarmi?
grazie mille.
Ash |
|
Top |
|
|
chemicalbit Dio maturo
Registrato: 01/04/05 17:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 11 Set 2006 22:42 Oggetto: |
|
|
Con un semplice file batch non mi pare si possa fare.
Forse si può fare usando delle estensioni che sono introdotte da progrmmi di terze parti (4DOS) o dalle ultime versioni del DOS/prompt dei comandi (via via in win95 e successivi).
Dovrei vedere. (se fosse "solo i file più vecchi della data gg/mm/aaaa" si potrebeb fare con quelle estensioni. Ma trovare il più vecchio .... mumble mumble )
forse fai prima ad usare un programmino apposito
(o a crearlo tu, ma non con un file batch, con un linguaggio di programmazione vero e proprio) |
|
Top |
|
|
ashasysley Mortale devoto
Registrato: 11/09/06 15:07 Messaggi: 7
|
Inviato: 12 Set 2006 08:43 Oggetto: numble ... |
|
|
Nei tuoi cassetti c'è nulla che fa per me?
C'è qualche programmino affidabile che mi cancelli i file facendo il paragone fra quelli che ci sono e prendendo il più vecchio?
Deve eseguire questa operazione ciclicamente.
Esiste un programma del genere?
Kiss Ash |
|
Top |
|
|
ashasysley Mortale devoto
Registrato: 11/09/06 15:07 Messaggi: 7
|
Inviato: 12 Set 2006 08:45 Oggetto: |
|
|
Aspetta ...
A me andrebbe anche bene:
Data di oggi - 2 gg = data X
Tutti i file più vecchi della data X
Mi andrebbe anche bene così ... Tanto devo solo conservare uno storico di 2 gg addietro alla data di oggi ...
E' più semplice così? |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 15 Set 2006 16:30 Oggetto: |
|
|
se fai sempre il backup di 3 file e non fai più di un backup al giorno allora ti potrebbe andare bene uno script che cancelli tutti i file TRANNE i 6 più recenti, vero?
Codice: | set CARTELLA=D:\dati\la-tua-cartella
for /F "skip=6 tokens=*" %i IN ('dir %CARTELLA% /b /t:c /o-d') do del %CARTELLA%\%i |
in pratica con
dir /b /t:c /o-d
ottengo la lista dei file ordinati con i più recenti in alto. Poi li cancello ad uno ad uno MA saltando i primi 6, infatti nel for c'è scritto "skip=6"
con Win2k/WinXP dovrebbe funzionare... |
|
Top |
|
|
chemicalbit Dio maturo
Registrato: 01/04/05 17:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 15 Set 2006 17:35 Oggetto: |
|
|
Uhm ... ne ha fatti di passi in avanti lo scripting batch, dal DOS 5.0
Mi sa che mi conviene rimetermi a studiare,
però a qeustopunto non so se mi convenga piuttosto studiare un altro linguaggio di programmazione (vero e proprio). |
|
Top |
|
|
GrayWolf Dio maturo
Registrato: 03/07/05 16:24 Messaggi: 2325 Residenza: ... come frontiera i confini del mondo...
|
Inviato: 17 Set 2006 10:12 Oggetto: |
|
|
non è uno script DOS... ma funziona
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
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 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 = 2
'*
'*
'* -------------------------------------------------------------
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 = ListaContenuti(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 inzio 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
wScript.quit
'* =========================================================
Function ListaContenuti(folderspec)
Set oFolder = oFSO.GetFolder(folderspec)
Set oFiles = oFolder.Files
For Each oFile in oFiles
sTmp = sTmp _
& day(oFile.datelastmodified) _
& "/" _
& month(oFile.datelastmodified) _
& "/" _
& year(oFile.datelastmodified) _
& chr(160) _
& oFile.name
sTmp = sTmp _
& vblf
Next
ListaContenuti = sTmp
End Function
'* =========================================================
|
salvare il codice soprastante 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
edit by GrayWolf
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. |
|
Top |
|
|
|