AGB  ·  Datenschutz  ·  Impressum  







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

Inhalt eines Ordners kopieren?

Ein Thema von PeterPanino · begonnen am 23. Jul 2009 · letzter Beitrag vom 23. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 01:30
So, ich habe jetzt wirklich lange gesucht und nichts gefunden.

Ich möchte den gesamten INHALT eines Ordners A (inkl. Dateien und Unterordnern) in einen anderen Ordner B kopieren, am besten mit ShFileOperation und womöglich mit mehreren Dateimasken aufeinmal.

Alles, was ich darüber gefunden habe war, wie man eine eine einzelne Datei oder einen einzelnen Ordner kopiert, aber nicht den INHALT eines Ordners.

Ich kann es nicht glauben, dass es dafür keinen einfachen Shell-Befehl geben soll! Muss ich wirklich jede einzelne Datei und jeden Unterordner im Quellordner abklappern und jede einzelne Datei und jeden Unterordner einzeln kopieren??

Mit dieser Funktion werden lediglich die DATEIEN im Wurzelverzeichnis des Quellordners kopiert, aber nicht die UNTERORDNER des Quellordners:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  CopyDir('F:\Quellordner\*', 'F:\Zielordner');
end;

function TForm1.CopyDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_COPY;
    fFlags := FOF_FILESONLY or FOF_SIMPLEPROGRESS or FOF_MULTIDESTFILES;
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir);
  end;
  Result := (0 = ShFileOperation(fos));
end;
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Ordner-INHALT in einen anderen Ordner kopieren?

  Alt 23. Jul 2009, 02:55
Zitat von PeterPanino:
Mit dieser Funktion werden lediglich die DATEIEN im Wurzelverzeichnis des Quellordners kopiert, aber nicht die UNTERORDNER des Quellordners
Das übliche Tomaten-auf-den-Augen-Syndrom
Was könnte das Flag FOF_FILESONLY bewirken?
fork me on Github
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Ordner-INHALT in einen anderen Ordner kopieren?

  Alt 23. Jul 2009, 02:58
Zitat von sx2008:
Zitat von PeterPanino:
Mit dieser Funktion werden lediglich die DATEIEN im Wurzelverzeichnis des Quellordners kopiert, aber nicht die UNTERORDNER des Quellordners
Das übliche Tomaten-auf-den-Augen-Syndrom
Was könnte das Flag FOF_FILESONLY bewirken?
Das muss Telepathie gewesen sein, ich habe das Posting gelöscht, BEVOR ich deine Antwort gelesen habe! Danke jedenfalls! Ja, das muss eine ganze Ladung Tomaten gewesen sein!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 03:09
Ich habe die Löschung des Postings rückgängig gemacht, da ich mich wegen der Tomaten auf den Augen ruhig schämen soll!

Aber noch eine andere Frage: Ich habe bei ShFileOperation keine Möglichkeit gefunden, mehrere Dateimasken aufeinmal einzubinden. Bleibt mir dann nichts anderes übrig, als die die ganze Funktion für jede Dateimaske zu wiederholen?
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 03:28
Mhmm, apropos Dateimasken, habe ich jetzt probiert und funktioniert nicht: Wenn ich die Funktion so aufrufe:

CopyDir('F:\Quellordner\*.lnk', 'F:\Zielordner'); dann werden wieder nur die Dateien im Wurzelverzeichnis (und keine Unterordner) kopiert!

Wie kann man also Wildcards einbinden?
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 04:00
Zusätzliche Frage: Kann es sein, dass die Funktion ShFileOperation zurückkehrt, bevor die tatsächliche Arbeit abgeschlossen ist? Denn wenn ich es richtig verstanden habe, wird ja eine externe Shell-Funktion aufgerufen (angestoßen?) und möglicherweise nicht gewartet, bis diese beendet ist?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 05:44
Zitat von PeterPanino:
Zusätzliche Frage: Kann es sein, dass die Funktion ShFileOperation zurückkehrt, bevor die tatsächliche Arbeit abgeschlossen ist?
Nein, dem ist nicht so, der Erfolg wird ja über den Rückgabewert angezeigt, das ginge dann wohl schlecht.

Und generell und auch für die andere Frage:
Dir ist offenbar nicht klar, was die Flags eigentlich bedeuten. Das ist schlecht...
Wie wäre es, wenn du (wenn du die Bedeutung des Flags nicht am Namen siehst) in der Dokumentation nachschaust?
Zitat:
FOF_MULTIDESTFILES
The pTo member specifies multiple destination files (one for each source file in pFrom) rather than one directory where all source files are to be deposited.
Wie das mit Wildcards aussieht, weiß ich nicht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 09:34
Zitat von jaenicke:
Dir ist offenbar nicht klar, was die Flags eigentlich bedeuten. Das ist schlecht...
War ein Schnellschuss aus der Clipboard-Hüfte , manchmal verrennt man sich in etwas ... Danke jedenfalls für den Hinweis zur Dokumentation!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 10:36
Wenn ich FOF_NO_UI (don't display any UI at all) verwende, gibt es offenbar kein Flag oder eine andere Möglichkeit, das Überschreiben von schreibgeschützten Dateien zu verhindern?
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.890 Beiträge
 
Delphi 12 Athens
 
#10

Re: Inhalt eines Ordners kopieren?

  Alt 23. Jul 2009, 10:59
@TE: Unterlass bitte das Pushen
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:17 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