TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich. Ansicht
Alt 24.10.2008, 20:47   #1 (permalink)
Stickstoff Junkie
 
Benutzerbild von bigfoot996
 
Registriert seit: 14.02.2005
Ort: 70 KM südlich Stuttg
Beiträge: 4.649

bigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblick

Standard [PERL/PowerShell] Dateien die alter als 30 Tage sind zippen...

Guten Abend,

ich bräuchte mal etwas Beistand bei Perl pls *g*

Und zwar bräuchte ich etwas hilfe bei einem script, was automatisch alle Dateien im vorgegebenen Ordner die älter als 30 Tage sind zippt und dabei alle älter als 60 löscht.

soweit so gut, folgendes hab ich schon:

Code:
#!c:/perl/bin/perl 
use strict; 

use warnings; 

use constant LOESCHEN => 0; 

use constant BEHALTEN => 1; 

use constant DELETED => -1; 

my $dir = \"C:/POWERSHELL/TESTSCRIPTS/\"; 

my $logFile = \"$dir/log.txt\";

my @allFiles; 

my %allFiles; 

my $lastMod; 

my $back30days = (time()-(86400*30)); 

&cd($dir);

foreach(@allFiles) { 

    $lastMod = (stat($_))[9]; 

    $allFiles{$_} = BEHALTEN if(($lastMod - $back30days) > 0 && -f $_); 

    $allFiles{$_} = LOESCHEN if(($lastMod - $back30days) < 0 && -f $_); 


    $allFiles{$_} = LOESCHEN if -d $_; 

} 

foreach(keys(%allFiles)) { 


    if ($allFiles{$_} == LOESCHEN && -f $_) { 


        $allFiles{$_} = DELETED if unlink($_); 


    } 


} 


foreach(keys(%allFiles)) { 


    if ($allFiles{$_} == LOESCHEN && -d $_) { 


        $allFiles{$_} = DELETED if rmdir($_); 


    } 

} 

&loggen(); 

sub loggen { 


    open(LOGFILE,\">$logFile\") or die $!; 


    foreach(keys(%allFiles)) { 


        print LOGFILE $_,\" --> \"; 


        print LOGFILE \"File/Directory wurde geloescht...\n\n\" if $allFiles{$_} == DELETED; 


        print LOGFILE \"File/Directory ist aktuell...\n\n\" if $allFiles{$_} == BEHALTEN; 

        print LOGFILE \"File/Directory wurde nicht geloescht...\n\n\" if $allFiles{$_} == LOESCHEN; 

    } 

    close(LOGFILE); 
} 

sub cd { 

    my $dir = shift; 

    my $base = $dir.\"/\"; 

    my @currDir;

    opendir(DIR,$dir) or die $!;

    @currDir=readdir(DIR); 

    close(DIR); 

    foreach(@currDir) { 

        next if $_ eq '.' or $_ eq '..'; 

        &cd($base.$_) if(-d $base.$_); 

        push(@allFiles,$base.$_);

    } 
}
So, jetzt raff ichs aber nich wie ich alle älter als 30 jünger als 60 zippen lassen kann und alle über 60 löschen? Vllt. kann mir da kurz einer unter die Arme greifen pls, wäre nett.

Danke und Gruß
Biggi

Geändert von bigfoot996 (05.11.2008 um 13:13 Uhr)
bigfoot996 ist offline   Mit Zitat antworten
Alt 05.11.2008, 13:12   #2 (permalink)
Stickstoff Junkie
 
Benutzerbild von bigfoot996
 
Registriert seit: 14.02.2005
Ort: 70 KM südlich Stuttg
Beiträge: 4.649

bigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblick

Standard AW: [PERL] Dateien die alter als 30 Tage sind zippen...

Is ja wahnsinn wie viele Leute hier perl scripten können naja, fakt ist dass perl sowieso nich funktionieren wird, mein script von oben geht zwar aber das is ne andere geschichte. PowerShell muss her

Muss gestehen, is scheinbar auch etwas einfacher, das ganze was ich oben in was weis ich wie vielen Zeilen gescripted hab geht mit pwoershell anscheinend in 2....

Code:
$now = get-date 
dir \"C:\POWERSHELL\TESTSCRIPTS\\" -recurse | where-object {($now - $_.LastWriteTime).Days -lt 30} | rm
So, nun tut sich aber leider nicht sonderlich viel....kann mir einer sagen wieso?^^
bigfoot996 ist offline   Mit Zitat antworten
Alt 06.11.2008, 13:36   #3 (permalink)
Stickstoff Junkie
 
Benutzerbild von bigfoot996
 
Registriert seit: 14.02.2005
Ort: 70 KM südlich Stuttg
Beiträge: 4.649

bigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblickbigfoot996 ist ein Lichtblick

Standard AW: [PERL] Dateien die alter als 30 Tage sind zippen...

Code:
function New-Zip
{
    param([string]$zipfilename)
    set-content $zipfilename (\"PK\" + [char]5 + [char]6 + (\"$([char]0)\" * 18))
    (dir $zipfilename).IsReadOnly = $FALSE
}

new-zip c:\Powershell\TESTSCRIPTS\Archiv\archiv.zip

function Add-Zip
{
    param([string]$zipfilename)

    if(-not (test-path($zipfilename)))
    {
        set-content $zipfilename (\"PK\" + [char]5 + [char]6 + (\"$([char]0)\" * 18))
        (dir $zipfilename).IsReadOnly = $FALSE    
    }
    
    $shellApplication = new-object -com shell.application
    $zipPackage = $shellApplication.NameSpace($zipfilename)
    
    foreach($file in $Input) 
    { 
            $zipPackage.CopyHere($file.FullName)
            Start-sleep -milliseconds 500
    }
}

dir c:\Powershell\TESTSCRIPTS\*.* -Recurse | add-Zip c:\Powershell\TESTSCRIPTS\Archiv\archiv.zip

$now = get-date
dir C:\POWERSHELL\Testscripts\*.* -recurse | where-object {($now - $_.LastWriteTime).Days -gt 10} | remove-item
falls es jemanden interessiert...habs letztendlich selber hinbekommen, vllt. kanns ja mal irgendwer brauchen.
bigfoot996 ist offline   Mit Zitat antworten
2 Benutzer bedanken sich für den Beitrag:
tele (06.11.2008), [EID]-Mr.GiZMO (06.11.2008)
Alt 06.11.2008, 14:27   #4 (permalink)
semi-diabolisch
 
Benutzerbild von [EID]-Mr.GiZMO
 
Registriert seit: 12.09.2005
Ort: Zwickau
Beiträge: 2.883

[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein

Standard AW: [PERL] Dateien die alter als 30 Tage sind zippen...

Immer wieder danke an Leute, die dann trotz mangelnder Beteiligung an Threads die Lösung rausrücken, die sie selber gefunden haben!

Thx, biggi!
War mein Post nützlich für dich? Ein Danke oder eine Bewertung sind immer schön.
Teilnehmer der Initiative "User verbessern Qualität im Forum" | Meine Systeme

Darf ich mal bitte vorbei?! Das geht nach Kompetenz... Danke! | | | Einmal dachte ich, ich hätte Unrecht. Hab mich aber getäuscht!
"Es ist gelogen, dass Videogames Kids beeinflussen. Hätte Pacman das getan, würden wir heute durch dunkle Räume irren, Pillen fressen und elektronische Musik hören."

[EID]-Mr.GiZMO ist offline   Mit Zitat antworten
Antwort

Stichworte
alter, dateien, tage, zippen..., [perl]


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir erlaubt, neue Themen zu verfassen.
Es ist dir erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Perl] cgi soll in 2 Dateien schreiben bradwarden Programmiersprachen 1 29.01.2007 21:15
mmm Dateien in avi Dateien umwandeln ??? Redboomcar Windows & Programme 3 03.11.2006 17:16
Perl.Santy.a infiziert Webseiten TweakPC: News News 6 22.12.2004 15:03
Ein gutes Perl Buch? Mr. Puzzy Marty Programmiersprachen 3 26.02.2004 22:53
cupsomatic-Perl-Script von Debian 3 gesucht sys3 Linux bzw. Non-MS & Programme 2 08.04.2003 21:35


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 Uhr.




Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum - Hardware-Links - Partner
Copyright © 1999-2013 TweakPC, Alle Rechte vorbehalten, all rights reserved