Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1

    eliminare quotidianamente in automatico file e cartelle

    Ciao a tutti.
    Ho un software (in funzione 24 ore su 24 su macchina con windows xp) che genera file e cartelle di backup quotidiani. Ho la necessità di mantenere sulla macchina i backup degli ultimi 3 mesi il che lascia poco spazio rimanente sull'hd. Se mi dimentico di cancellare i file più vecchi di tre mesi l'hd si riempie e il software si blocca ovviamente.
    Vorrei sapere se sia possibile sfruttare le operazioni pianificate di windows (magari per lanciare
    un file batch opportuno) per cancellare la cartella o il file di backup vecchio di 3 mesi e un giorno. Avendo già i backup degli ultimi tre mesi, sarebbe suff cancellare il backup più vecchio presente che automaticamente sarebbe quello di tre mesi e un giorno fa.
    Se questa operazione la riesco ad attivare in automatico ogni giorno avrò sempre e solo gli ultimi tre mesi di backup.

    Io avrei pensato come scrivevo all'unione "operazioni pianificate" e file bacth, ma non saprei come attuarlo.
    Esistono altri metodi?

    Grazie in anticipo.
    Simone
    http://www.diemmedi.com
    --------------
    "La citazione è l'anticamera dell'ignoranza" (André La Vallette)

  2. #2
    Che io sappia le Operazioni pianificate sfruttano programmi già esistenti e li automatizzano, non ne creano nuovi "su misura"...

    Se file e cartelle di backup sono localizzati in una specifica cartella, potresti utilizzare la funzione Cerca di Windows, puntando alla cartella di backup e mettendo come data la "Data di creazione" e fissando un intervallo pari ad esempio a "3 mesi e un giorno da oggi" (scrivi manualmente la data in formato gg/mm/aaaa) e "3 mesi e due giorni da oggi"...
    Magari la prima volta estendi la ricerca a 4 mesi da oggi, in modo da sbarazzarti di eventuali file dimenticati.

  3. #3
    ciao e grazie per la risposta.
    Non ho capito però la questione del cerca. A cosa mi serve? io ho la cartella dove vengono creati i backup. Fino ad ora elimino i file più vecchi manualmente. Vorrei rendere la cosa automatica.

    L'idea di usare le operazioni pianificate era questa: pinificare il lancio quotidiano di un file batch che elimini il file più vecchio nella cartella backup. Credo sia fattibile, solo che non so come scrivere il fil bat.
    http://www.diemmedi.com
    --------------
    "La citazione è l'anticamera dell'ignoranza" (André La Vallette)

  4. #4
    Utente di HTML.it L'avatar di hszeee
    Registrato dal
    Dec 2005
    Messaggi
    323
    se devi svuotare un intera cartella potresti crearti un file .bat (magari da tenere sul desktop).
    "L' Ape cross non è solo un mezzo di locomozione, è uno stile di vita." (Oscar Wilde)

  5. #5
    Qua c'è qualcosa relativa all'eliminazione di cartelle vecchie di 4 giorni...
    http://www.experts-exchange.com/Prog..._22495164.html

  6. #6
    Trovato! Resta da procurarsi il file forfiles.exe

    When I've dealt with this problem in the past (for example, auto-cleaning web log directories of anything older than 30 days) I've most commonly used forfiles.exe, which comes standard on some of the MS OSes although I don't think it's there on XP. However, it can be found in the (free) reskits, or easier if you just want the one file instead of a big install package you can search around for a copy on the net and dump it in your c:\windows\system32\ directory. If you know anyone with a copy of Windows 2003 you can get it from them, too.

    Forfiles.exe command/batch file
    Once you have a copy of forfiles.exe you write a simple batch file- pretty much one line:

    forfiles /P PATHTOFOLDER /S /D -30 /M *.* /C "cmd /C del @path /Q"


    Where PATHTOFOLDER is the full path to the directory in question (c:\windows\temp in your case?), the /S means "... and all subdirectories" if desirable, and the -30 after /D is "older than 30 days"; you can change to -10 if you want 10 days, etc. /M is file mask (*.* for all files) and /C is the command you'd run on any file matching these parameters, in this case "delete" with the /Q switch to avoid prompting.

    Also, in some cases you may want it to get rid of folders as well, in which case you can add a second command to use /C "cmd /C rd @path /Q" at the end instead of the del @path /Q, which should quietly error out on non-folders but otherwise remove old folders after the files have been cleaned up. That might make your batch file look like this:

    forfiles /P PATHTOFOLDER /D -30 /M *.* /C "cmd /C del @path /Q"
    forfiles /P PATHTOFOLDER /S /D -30 /M *.* /C "cmd /C rd @path /Q"

    Try this on a copy of a folder first to test it out... I can't stress this enough, copy some folder to c:\TEST or something, and try all your batch jobs out there as the PATHTOFOLDER, so you're sure you've done the syntax as I have above and it works... before you point it at any actual directory for the love of god and all that is holy.

    Schedule in AT or task manager
    Save this command line in a simple text CleanTemp.bat file using notepad- you can repeat the line multiple times in the CleanTemp.bat file if you want to do this with more than one folder as a target, or using the "remove directory" example I mentioned above. Every time you run it, it'll execute those commands in the background. Then have that scheduled to run via task scheduler and it's GUI, or the AT command at a command propmt, whichever is simpler for you. Ex:

    at 9:00a /every:Su,M,T,W,Th,F,S c:\scripts\CleanTemp.bat

    where c:\scripts\cleantemp.bat is the full path to the batch file. This will run it automatically at 9am every single day. You can type AT at the command line with no arguments to see any existing schedule jobs. Adjust to taste, add seasoning.
    http://www.diemmedi.com
    --------------
    "La citazione è l'anticamera dell'ignoranza" (André La Vallette)

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da dmd
    Trovato! Resta da procurarsi il file forfiles.exe
    http://www.petri.co.il/download_free_reskit_tools.htm

  8. #8
    Perfetto! Grazie mille!
    http://www.diemmedi.com
    --------------
    "La citazione è l'anticamera dell'ignoranza" (André La Vallette)

  9. #9
    Ragazzi e se invece di giorni .. parliamo di minuti? in pratica mi servirebbe lo stesso script .. ma invece di giorni .. mi servirebbero i minuti .. nel senso, cancella i file vecchi piu' di 15 minuti.
    Io c'ho provato a modo mio .. portando i minuti ad ore. E' Fattibile o c'è un'altra via?

    ciao daniele


    è ufficiale la mia proporzione non funge

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Per operazioni simili non c'è niente di meglio della powershell della microsoft.

    La puoi scaricare da qui

    http://www.microsoft.com/windowsserv.../download.mspx

    una volta installata la richiami digitando powershell da esegui.
    A questo punto, come col classico prompt dei comandi, raggiungi la cartella di tuo interesse e digiti questo comando:

    codice:
    gci -rec | ? {(get-date).addminutes(-15) -gt $_.creationtime} | ri -whatif
    Te lo spiego brevemente.
    Con gci -rec recuperi in modo ricorsivo tutti i file presenti anche nelle eventuali sottodirectory.
    Il ? è la contrazione del comando where-object che serve per filtrare i file in base a determinati requisiti.
    Nel nostro caso il requisito è che la data attuale meno 15 minuti sia maggiore (gt) della data di creazione del file.
    Una volta eseguito tale filtraggio reindirizzi tali file tramite la pipe (|) al passaggio successivo affinchè vengano rimossi col comando ri che è la forma contratta di remove-item.

    Questo comando cancellerà tutti i file creati più di 15 minuti fa. Nel caso invece voglia eliminare i file la cui data di ultima modifica (e non di creazione), risalga sempre a più di 15 minuti fa sostituisci $_.creationtime con $_.lastwritetime.


    Nel comando che ti ho scritto qua sopra lo switch -whatif serve per verificare cosa accadrebbe nel caso in cui il comando venisse effettivamente eseguito. In pratica serve ad evitare disastri.
    Nello specifico per ciascun file che verrebbe eliminato ti scriverà: "Esecuzione dell'operazione "Rimuovi file" sulla destinazione tuo_path_completo in corso.
    Una volta che ti sei accertato che il comando fa effettivamente ciò che desideri è sufficiente rimuovere il -whatif.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.