AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner kopieren

Ein Thema von Z32 · begonnen am 7. Mär 2006 · letzter Beitrag vom 8. Mär 2006
Antwort Antwort
Z32
(Gast)

n/a Beiträge
 
#1

Ordner kopieren

  Alt 7. Mär 2006, 21:13
Hallo,

Ich würde gerne wissen, ob es einen Befehl gibt, der einen bestimmten Ordner auf eine andere Partition oder auch in einen anderen Ordner KOPIERT. Der alte Ordner soltte trotzdem noch vorhanden sein.

Ich brauche den Befehl, für ein Sicherungsprogramm, dass regelmäßig verschiedene Ordner wo anders hinkopiert. Deshalb wäre es gut, wenn gleiche Dateien ersetzt würden.

Also ich bezweifele zwar, das es so einen Befehl gibt, aber fragen wollte ich trotzdem mal.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Ordner kopieren

  Alt 7. Mär 2006, 21:20
Gibt es. Die [dp="Ordner kopieren"]Suche[/dp] hilft: Hier im Forum suchenSHFileOperation.
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Ordner kopieren

  Alt 7. Mär 2006, 21:48
SHFileOperation is aber nicht so gut, weil es die Windows Shell als Zwischenstufe verwendet (wie der Explorer).

eventuell dürften dir diese Funktionen weiterhelfen:
Delphi-Quellcode:
procedure getdirsindir(const verzeichniss:string;var dirs:tstringlist);
var
  sd:string;
  s:tsearchrec;
  i:integer;
begin
  dirs:=tstringlist.Create;
  sd:=dirup(verzeichniss);
  if findfirst(sd+'*.*',faanyfile,s)<>0 then begin
    sysutils.findclose(s);
    exit;
  end;
  dirs.add(s.Name);
  while findnext(s)=0 do
    dirs.Add(s.name);
  i:=0;
  while i<dirs.count do begin
    if ((dirs[i]='..') or (dirs[i]='.')) then begin
      dirs.Delete(i);
      i:=i-1;
    end else
      if not directoryexists(sd+dirs[i]) then begin
        dirs.Delete(i);
        i:=i-1;
      end;
    inc(i);
  end;
  sysutils.findclose(s);
end;

function getfilesindir(const verzeichniss,filter:string;var files:tstringlist):extended;
var
  sd:string;
  s:tsearchrec;
  i:integer;
  e:extended;
  flt:string;
begin
  if filter='then
    flt:='*.*'
  else
    flt:=filter;
  e:=0;
  sd:=dirup(verzeichniss);
  result:=0;
  files:=tstringlist.Create;
  if findfirst(sd+flt,faanyfile,s)<>0 then begin
    sysutils.findclose(s);
    exit;
  end;
  files.add(s.Name);
  while findnext(s)=0 do begin
    files.Add(s.name);
    e:=e+s.Size;
  end;
  i:=0;
  while i<files.count do begin
    if ((files[i]='..') or (files[i]='.')) then begin
      files.Delete(i);
      i:=i-1;
    end else
      if directoryexists(sd+files[i]) then begin
        files.Delete(i);
        i:=i-1;
      end;
    inc(i);
  end;
  result:=e;
  sysutils.findclose(s);
end;

function gettreeindir(const root:string;var files,dirs:tstringlist;filter:string):extended;
var
  sd:string;
  i,j:integer;
  fls,unterverzeichnisse:tstringlist;
  flt:string;
  groesse:extended;
begin
  groesse:=0;
  if filter='then
    flt:='*.*'
  else
    flt:=filter;
  sd:=dirup(root);
  files:=tstringlist.Create;
  dirs:=tstringlist.Create;
  dirs.Add(sd);
  i:=0;
  while i<dirs.Count do begin
    getdirsindir(dirs[i],unterverzeichnisse);
    for j:=0 to unterverzeichnisse.Count-1 do
      dirs.Add(dirup(dirs[i])+unterverzeichnisse.Strings[j]);
    inc(i);
  end;
  for i:=0 to dirs.Count-1 do begin
    groesse:=groesse+getfilesindir(dirs[i],flt,fls);
    for j:=0 to fls.Count-1 do
      files.Add(dirup(dirs[i])+fls.strings[j]);
  end;
  result:=groesse;
end;
dann mit forcedirectories Verzeichnisse erstellen und mit copyfile die Dateien kopieren.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Ordner kopieren

  Alt 7. Mär 2006, 23:51
Und warum ist das nicht gut? Guck mal, wa du da jetzt an Code produziert hast. Mit der API Funktion reduziert sich das auf 10 bis 15 Zeilen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Ordner kopieren

  Alt 8. Mär 2006, 12:03
Zitat von ichbins:
SHFileOperation is aber nicht so gut, weil es die Windows Shell als Zwischenstufe verwendet (wie der Explorer).
Ist doch okay. Die Ordner sollen wohl unter Windows kopiert werden, und den schicken Fortschrittsbalken bekommt man gratis dazu. Warum soll ich mir die Mühe machen, wenn ich das Betriebssystem anzapfen kann?
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#6

Re: Ordner kopieren

  Alt 8. Mär 2006, 16:00
Danke für die Tipps bisher. Aber ich wäre auch lieber für 10 - 15 Zeilen als dieses Monster Programm. Da muss man sich erst mal zurechtfinden
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz