Salve a tutti,
Mi aiutate perfavore a creare un batch che mi dia la possibilità di cancellare i file TXT più vecchi di 3 giorni in una o più cartelle specifiche nel mio caso c:\log e c:\tempdb?
Grazie ve ne sarei molto grato.
Salve a tutti,
Mi aiutate perfavore a creare un batch che mi dia la possibilità di cancellare i file TXT più vecchi di 3 giorni in una o più cartelle specifiche nel mio caso c:\log e c:\tempdb?
Grazie ve ne sarei molto grato.
Io ti consiglierei di utilizzare la powershell.
In questo thread trovi la procedura per installarla
http://forum.html.it/forum/newreply....ostid=12157627
Poi non devi far altro che eseguire questo comando:
che ciclerà in maniera ricorsiva entrambe le directory eliminando tutti i file la cui data di creazione è più vecchia di tre giorni rispetto alla data odierna.codice:gci c:\tempdb, c:\log -rec | ? {-not $_.psiscontainer -and $_.creationtime -lt (get-date).adddays(-3) } | % {remove-item $_.fullname -whatif}
Una volta che ti sei accertato che i file che verrebbero rimossi sono quelli desiderati rimuovi lo switch -whatif e riesegui il comando.
Se non ti piace la powershell e vuoi battagliare con una sintassi contorta puoi usare forfiles.
Qui trovi un esempio.
http://blog.stevienova.com/2007/02/2...mount-of-days/
edit. Mi era sfuggita la limitazione ai file txt.
codice:gci c:\tempdb, c:\log -rec -filter *.txt | ? {-not $_.psiscontainer -and $_.creationtime -lt (get-date).adddays(-3) } | % {remove-item $_.fullname -whatif}
grazie 1000 per il consiglio. Il problema è che devo fare questo tipo di pulizia su 20 pc che eseguono un software. Sinceramente vorrei evitare di installare questo powershell su tutti i pc e per questo vorrei tentare la strada del batch.
Comunque grazie vedo cosa posso fare.
Non è necessario che installi la powershell su tutti i client. E' sufficiente che tu la abbia su un pc , che condivida le due cartelle e che abbia i permessi di scrittura sulle stesse.Originariamente inviato da morcas
grazie 1000 per il consiglio. Il problema è che devo fare questo tipo di pulizia su 20 pc che eseguono un software. Sinceramente vorrei evitare di installare questo powershell su tutti i pc e per questo vorrei tentare la strada del batch.
Comunque grazie vedo cosa posso fare.
Per esempio condividi le cartelle tempdb e log lasciando loro lo stesso nome. Avrai quindi le share nel seguente formato
\\nome_computer1\log
\\nome_computer1\tempdb
\\nome_computer2\log
\\nome_computer2\tempdb
e così via.
Ti suggerisco di scaricare powershell analyzer
http://www.powershellanalyzer.com/
risulta infatti più comoda un'interfaccia grafica quando si scrivono comandi più lunghi di una sola riga.
Ti serve adesso un semplice file di testo che conterrà l'elenco di tutti i pc.
Esempio
File elenco_pc.txt
nome_computer1
nome_computer2
...
nome_computerN
Lo script tramite get-content (cui passerai l'esatto percorso del file di testo), recupera l'elenco di tutti i computer della tua rete, tramite un ciclo foreach li esamina uno per uno, andrà ad analizzare le due cartelle condivise su ciascuno di essi ed eliminerà tutti i file più vecchi di tre giorni.codice:$computers = get-Content "C:\Documents and Settings\...tuo_path...\elenco_pc.txt" foreach($computer in $computers) { gci \\$computer\tempdb, \\$computer\log -rec -filter *.txt | ? {$_.creationtime -lt (get-date).adddays(-3) } | % {remove-item $_.fullname -whatif} }
Come ti avevo già scritto, nel caso sia tutto come ti aspetti, rimuovi il -whatif.
ok grazie provo subito.