#! perl use strict; use warnings; use File::Find; use File::Copy; use POSIX qw(strftime); my %daten; my %Config; my $ini = "$ARGV[0]"; my $programmpfad = $0; $programmpfad =~ s/[^\\]*?$//; my $ini_full = $programmpfad.$ini; my $datum = date(1); my $datum_datei = date(2); print $datum_datei; my $userprofile = qx{echo %userprofile%}; chomp $userprofile; my $ntlogpfad = $userprofile.'\Lokale Einstellungen\Anwendungsdaten\Microsoft\Windows NT\NTBackup\data'; open (INI, $ini_full) or die "Fehler bei INI-Datei $ini: $!"; while () { next if /^#/; chomp; if (/^\s*(\w+)\s*=\s*(.*)/) #die erste () ist $1, und die die zweite () ist $2; { $Config{$1} = $2; } } my $befehl = $Config{ntbackuppfad}." backup \"\@".$programmpfad.$Config{bksname}."\" ".$Config{parameter}." \"".$Config{backuppfad}.$Config{backupname}." ".$datum.".bkf\""; system "$befehl"; if (($Config{parameter} =~ /\/L:(.)/)or($Config{parameter} =~ /\/l:(.)/)) { if (($1 ne 'n')or($1 ne 'N')) { find(\&find_log,$ntlogpfad); if (not (-e $Config{logpfad})) { $Config{logpfad} = $programmpfad; } for my $zeile (sort keys %{$daten{log}}) { if ($daten{log}{$zeile} eq $datum_datei) { copy($ntlogpfad."\\".$zeile, $Config{logpfad}); } } } } sub find_log { if( -e $File::Find::name) { my $filedate = (stat($File::Find::name))[9]; my $formtime = strftime("%d.%m.%Y", localtime $filedate); print $formtime; $daten{log}{$_} = $formtime; } } sub date { my $modus = shift; my ($mday,$mon,$year)=(localtime(time))[3,4,5]; my $datum = sprintf("%04d-%02d-%02d",$year+1900,$mon+1,$mday); my $datum_datei =sprintf("%02d.%02d.%04d",$mday,$mon+1,$year+1900); if ($modus == 1 ) { return $datum } else { return $datum_datei } }