Gå til innhold

Ønsker meg et program som arkiverer filer i mapper etter dato


Anbefalte innlegg

Heisann

 

Har et program som oppretter en fil hver time, med filnavn xxxxx[dd].[mm].[yyyy]-[tt]-[mm]-[ss]

 

Jeg ønsker et program som kan kjøre i bakgrunnen, som automatisk flytter filene i en mappe tilsvarende datoen på filene, sånn at det blir liggende 24 filer i hver mappe.

 

Ønsker samtidig at filene blir liggende i root-mappen i 24 timer før de blir arkivert i mappen. Hadde satt veldig stor pris på om noen hadde tatt seg tid til å lage noe sånt, evt. tipse meg om et ferdig program hvis det finnes :)

 

 

På forhånd, takk så mye!

Lenke til kommentar
Videoannonse
Annonse
  • 2 uker senere...

Hei r2d290.

 

Lage en kode for en stund siden som slettet filer etter satt dato.

Forandret litt på det,så nå flytter det filer før satt dato.

 

Dette vil flytte filer når du har fått 24 filer(en i timen som sier)for da skifter dato.

Til en mappe du velger.

Har ikke fått testet så mye med det ennå,viss filer har samme navn må det skives om litt.

 

Men du kan jo teste litt med det,kan kjøres som en windows "schedule" en gang i døgnet.

Man kan sette om en windows tjeneste(krever litt jobb opprette nytt i register)

Eller bruke python sin "schedule" modul.

 

Det beste hadde vært om du kunne litt python,og forandret det til og passe deg 100% nå har du fått et greit utgangspunkt.

#! /usr/bin/Python
# |---|snippsat|---|
# Date_remove.py

import os, glob, time, sys, shutil

def file_remove(root,xdate,dst_folder):
   '''
   * Function to remove file by there date/last modified-date
   * Possible to run from command line
   * sys.argv[0] name of this script sys.argv[1] first argument.
   * New fuction that move files to dst_folder
   '''
   print '-'*30
   for folder in glob.glob(root):
       print folder
       ##Remove now only txt,can use other file format eksp: .jpg
       for my_files in glob.glob(folder + '/*.txt'):        
           stats = os.stat(my_files)         
           lastmodDate = time.localtime(stats[8])  
           expDate = time.strptime(xDate, '%Y-%m-%d')
           print my_files, time.strftime("%m/%d/%y", lastmodDate)
           if  expDate > lastmodDate:
               try:
                   print 'Moving', my_files, time.strftime("(older than %m/%d/%y)", expDate)
                   shutil.move(my_files, dst_folder)  ##New function move file older than xDate
                   ##Can use move oy copy                    
                   #os.remove(my_files)  ##For testing we do not remove files,but use line over to print result.
               except OSError:
                   print 'Could not remove', my_files
   print '-'*30 

if __name__ == '__main__':    
   ##Your folder
   root = 'C:/tmp/'     

   ##To folder(move files)
   dst_folder = 'C:/tes/'    

   #Expiration date format YYYY-MM-DD
   xDate = '2010-03-01'

   #|---| TO use script from command line
   #xDate = sys.argv[2] ##Take Date to command line
   #root = sys.argv[1]  ##Take path to command line
   #root = 'D:/test/*'  ##To Seek all sub folders use *   

   #Call function
   file_remove(root,xDate,dst_folder)  

 

 

Test run med 2 eldere filer og en ny.

------------------------------
C:/tmp/
C:/tmp\file2.txt 02/20/10
Moving C:/tmp\file2.txt (older than 03/01/10)
C:/tmp\samlet.txt 02/20/10
Moving C:/tmp\samlet.txt (older than 03/01/10)
C:/tmp\samletny.txt 03/02/10
------------------------------

Endret av SNIPPSAT
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...