08. januar 2001 - 14:56Der er
49 kommentarer og 1 løsning
Automatisk sletning af gamle filer
Jeg har brug for et program der chekker datoerne på en række filer (*.*), og hvis disse er over en måned gamle sletter dem. Er der nogen der har et forslag til hvordan dette kan løses? Jeg rodede mig ud i noget batch programmering, men det blev hurtigt for indviklet, da dos bl.a. ikke understøtter lange filnavne, der er nødvendigt i dette tilfælde. Håber nogen har en idé.
Ja længere nede skriver han at han har prøvet med batch programmering, men siden han nævner dos drejer det sig nok om en .bat fil og ikke noget serverside script sprog. ja perl kan også bruges på selve maskinen, men er mere til linux.
Det jeg mente med min kommentar var bare, at han nok er ret ligeglad med hvordan det er lavet. Det ville jeg i hvert fald være. Ved noget så langsomt som diskaccess ville selv go\'e gamle MyreSnak kunne følge med :-)
disky >> Hvis han vidste, hvad han skulle bruge, stille han vel næppe et spørgsmål - og da han nu stiller et spørgsmål, er det vel blot et udslag af venlighed, at folk ridser hans options op. Har du selv et bedre forslag - altså til et færdigt program - ville det da være et nydeligt træk i din karakter at fortælle ham om det :)) /mvh
På min arbejdsplads havde vi brug for en lignende utility.
Vi havde brug for et stykke software, der kunne holde øje med en stribe biblioteker. Når filer i disse biblioteker f.eks. ikke har været rørt i 3 uger, skal de i nogle tilfælde slettes, og andre flyttes.
Jeg fandt Automated File Deletion System fra Wescosoft. Dette har vi nu implementeret, og det har fungeret upåklageligt. Se mere på http://www.wescosoft.com/afds_features.htm
Ja, det ved jeg godt, du skrev - men hvilket serverside sprog, man skriver applikationen i, er vel ligegyldigt...!?! Hvad er der galt i at nævne, det også kan skrives i de andre sprog - udover Java, som var det, du nævnte? :)) /mvh
der blev nævnt PHP som er et server side sprog, hvor relevant er det ??
Og perl ja til linux, det kan godt være det også virker under windows hvis man gider bøvle med installation (sikkert på standard besværlig linux maner) Men windows folk kender normalt ikke perl.
Men vi kan da godt komme med en liste over alle de mulige sprog der eventuelt kan anvendes, hvis du synes det er smart. Jeg vil så starte med Java,c,c++,basic,vb,qbasic,fortran,lisp,cobol, osv
Okay - jeg er godt klar over dette kan laves i de fleste sprog. Jeg var egentligt blot interesseret i om folk havde nogle små foreslag til kommandoer man kunne bruge til at løse dette problem på.. Evt. eksempler på at finde ud af om en fil er over en måned gammel.. Tak for foreløbigt mange svar!
Spytter ikke...undrer mig blot dybt...!!! Bruger selv PHP til præcist det her...funker upåklageligt! Kører i fastlagte intervaller via et cronjob. Ja, det finder jeg meget mere relevant end pubertært brok over det, de andre foreslår! :))) /mvh
Men det var nu ret nemt for en Perl analfabet at regne ud at stat() returnerede filinfo. Og det tog ikke lang tid at se, hvad der var sidste ændring og hvad der var sidste access.
ja men stadigvæk ulogiske i forhold nyere pænere sprog.
Jeg har desværre på min arbejdsplads set alt for mange eksempler på det mareridt folk ender i når de skal rette fejl i tidligere ansattes perl kode. Og det skyldes netop sådanne ting som du lige nævnte. Og lad nu være med at påstå at vores programmører ikke er dygtige, for det er de.
Det er vel pga en dårlig kodningsstandard i firmaet. For 13 linier (øv - ikke 10) er det ligegyldigt, for det er standard teknikker - men for store systemer skal man natuirligvis gøre det ordentligt, f.eks. give nogle sigende navne...
Ja, noget må der være galt. Jeg gjorde præcis det samme, og det virkede. Hvilken version af Perl er det (skriv perl -v ) og hvilket operativsystem er det? Kør dette script, og kopier resultatet herud:
$dir=\'C:/test\'; opendir(D,$dir); while ($f=readdir(D)) { if (-f \"$dir/$f\") { @a=stat(\"$dir/$f\"); print \"$dir/$f tid: $a[9] (nu: \".time().\")\\n\"; # $days=int((time()-$a[9])/(60*60*24)); # if ($days>31) { # unlink(\"$dir/$f\"); # print \"$dir/$f slettet $days dage gammel\\n\"; # } } } closedir(D);
Synes godt om
Slettet bruger
09. januar 2001 - 08:16#39
Hey - vent.. Tror det var mig der dummede mig i går. Det virker fint nu. Tusind tak for hjælpen. Et sidste spørgsmål... Hvis jeg skal have dette script til at køre fra et bibliotek og så chekke alle underbiblioteker - hvordan kan jeg så gøre det? (underbiblioteket der er for gammelt, skal også slettes.)
Jeg burde oprette et nyt spørgsmål, så du kan få dine points Erik. Dette er virkelig en stor hjælp.
Okay .... jamen det er faktisk heller ikke så bøvlet at gøre det i underkataloger... Jeg skal lige noget andet først - mener du at tomme underkataloger skal fjernes, for hvis der er nyere filer i, så skal de vel blive stående....
Ok - jeg nåede det lige. Jeg har afprøvet det, men du skal være advaret om at det kan være farligt! Jeg udelukker kataloger ovenover startkataloget ved at teste for \'..\' - ellers vil du pludselig risikere at slette på hele din harddisk. Jeg tror det virker - jeg har prøvet det på min egen PC, med mange vigitige filer - jeg turde godt, men der en lille risiko ved det, specielt jo hvis du piller i den linie med \'.\' og \'..\'
Hmm, jeg tror da jeg skal have ryddet automatisk op i mit temp-katalog med dette script hver gang jeg starter!
$startdir=\'C:/test\'; push(@dir,$startdir); while ($dir=pop(@dir)) { opendir(D,$dir); while ($f=readdir(D)) { if (-d \"$dir/$f\" && $f ne \'.\' && $f ne \'..\') { push(@dir,\"$dir/$f\"); } elsif (-f \"$dir/$f\") { @a=stat(\"$dir/$f\"); $days=int((time()-$a[9])/(60*60*24)); if ($days>31) { unlink(\"$dir/$f\"); print \"$dir/$f slettet $days dage gammel\\n\"; } } } closedir(D); if ($dir ne $startdir) { rmdir($dir); # only removed if empty print \"$dir slettet, det var tomt\\n\"; } }
Synes godt om
Slettet bruger
09. januar 2001 - 10:17#42
Lige præcis - hvis mapperne er tomme skal disse også slettes.
Tag lige og prøv det grundigt af.... Men ja, opret et nyt spørgsmål i denne kategori, overskrift: \"Point til erikjacobsen\". Skriv en link til indeværende spørgsmål i det nye, så er den helt ok.
hmm meget gammelt spørgsmål!! men vil da gerne lige rose jer begge erik og rubber for den måde i omgåes emnet!! i skulle være forbillede for mange af dem der kommer herind og forlanger alt muligt! RESPEKT
\Zero-Hero aka Stefan Toft
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.