Christoph: Verzeichnis abgleichen

Beitrag lesen

Hallo alligator,

Wie das progammiertechnisch realisieren soll, hab ich noch keine wirklichen Ideen. Bei der Problematik ahne ich schlimmes
--> Rekursion. Hab damit noch nie was gemacht.

so schwierig ist Rekursion aber auch nicht. Das folgende Perl-Programm setzt Deine Möglichkeit 2 um:

#!/usr/local/bin/perl -w
use strict;

sub loeschen{
  my $folder=shift;
  opendir(FOLDER,"$folder");
  for(readdir(FOLDER)){
    next unless(/\w/);
    if(-f "$folder/$_"){
      unlink("$folder/$_")||next();
    }
    elsif(-d "$folder/$_"){
      loeschen("$folder/$_")||next();
    }
  }
  rmdir("$folder");
}

sub kopieren{
  my($original,$kopie)=@_;
  mkdir($kopie)||die("Kann Ordner $kopie nicht erstellen: $!");
  opendir(FOLDER,"$original");
  for(readdir(FOLDER)){
    next unless(/\w/);
    if(-f "$original/$_"){
      open(ORIGINAL,"<$original/$_")||die("Kann $original/$_ nicht lesen: $!");
      open(KOPIE,">$kopie/$_")||die("Kann $kopie/$_ nicht schreiben: $!");
      if(/.(jpg|gif|exe)$/){ # gegebenenfalls zu erweitern!
        binmode(ORIGINAL);
        binmode(KOPIE);
      }
      print KOPIE <ORIGINAL>;
      close(KOPIE);
      close(ORIGINAL);
    }
    elsif(-d "$original/$_"){
      kopieren("$original/$_","$kopie/$_");
    }
  }
}

loeschen('d:/save/hund');
kopieren('c:/hund','d:/save/hund');

Nicht schön, aber bei mir klappt's.

Gruß, Christoph