![]() |
AW: Pfadinhalte eine Ebene aufwärts kopieren
Für den übergeordneten Ordner sollte doch ein Rename (statt Kopieren+Löschen) reichen, für den verbleibenden Rest dann Rolfs Prozeduren, oder?
|
AW: Pfadinhalte eine Ebene aufwärts kopieren
Delphi-Quellcode:
Versuche das mal.
function MoveDir(SrcDir, DstDir: string): Boolean;
var FOS: TSHFileOpStruct; begin ZeroMemory(@FOS, SizeOf(FOS)); with FOS do begin wFunc := FO_MOVE; // FO_COPY; fFlags := FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS; pFrom := PChar(IncludeTrailingPathDelimiter(SrcDir) + '*.*'#0); pTo := PChar(DstDir + #0); end; Result := (SHFileOperation(FOS) = 0); end; |
AW: Pfadinhalte eine Ebene aufwärts kopieren
Danke, aber ich hatte das Problem noch nicht. War nur eine theoretische Überlegung von mir, da Umbenennen bei großen Dateien platten-/SSDschonender ist (und vermutlich auch schneller). :wink:
|
AW: Pfadinhalte eine Ebene aufwärts kopieren
Zitat:
Also die Variante die ich zeigte ist dieselbe die Windows einsetzt. Um auf Dich einzugehen, Ja ein "Move/Bewegen" ist schonender und schneller wenns das gleiche Laufwerk/Partition betrifft, ansonsten ist es egal. |
AW: Pfadinhalte eine Ebene aufwärts kopieren
Zitat:
@old7 Er möchte den übergeordneten Order nicht "löschen/umbennen" sondern nur den Inhalt des Untervezeichnisses in den bestehenden Überorder verschieben. Der Inhalt im übergeordneten Order soll dabei nicht verändert werden, also alles was schon besteht soll auch nach dem Move noch vorhanden sein. Zumindest habe ich das so verstanden. |
AW: Pfadinhalte eine Ebene aufwärts kopieren
Ich dachte, es ginge ihm erst mal darum den übergeordneten Ordner raus zu bekommen. Wie er dann seine Dateien dahin bekommt, wäre dann ein anderes Problem. Man könnte dann ja auch mit einem Zwischenschritt über einen temporären Ordner gehen. Liegt der in der selben Partition wird ja eh nur der Eintrag im FAT geändert und sie werden nicht physisch verschoben. Was dann auch recht schnell sein sollte.
|
AW: Pfadinhalte eine Ebene aufwärts kopieren
@Rolf
Um die Datei C:\ueber\unter\riesig.mp4 nach C:\ueber\riesig.mp4 zu verschieben, sollte ein Umbenennen der Datei riesig.mp4 reichen, falls sie noch nicht in C:\ueber vorhanden ist, das meinte ich. Das hat nichts mit dem "löschen/umbenennen" des übergeordneten Ordners zu tun, da habe ich den TE schon richtig verstanden, siehe Luckie, der übergeordnete Ordner liegt ja immer in der selben Partition, also wird nur der Eintrag in der FAT umbenannt, falls möglich. In diesem Fall kann man sich das Kopieren+Löschen von riesig.mp4 sparen. Da hast du mein "umbenennen" wohl falsch verstanden ;-) |
AW: Pfadinhalte eine Ebene aufwärts kopieren
ungefähr sowas?
Delphi-Quellcode:
In kurz (ohne Fehlerbehandlung ...):
sAlt := 'c:\temp\alt\irgendeine.mp3';
sWegdamit := '\alt\'; sNeu := AnsiReplaceText(sAlt,sWegDamit,'\'); if not SysUtils.RenameFile(sAlt,sNeu) then ShowMessage(Format('Fehler beim Umbenennen: %s',[sAlt,sNeu]));
Delphi-Quellcode:
SysUtils.RenameFile(sDateiname,AnsiReplaceText(sDateiname,'\alt\','\'));
|
AW: Pfadinhalte eine Ebene aufwärts kopieren
Jupp, und auf die Idee mit AnsiReplaceText für den Ü-Ordner wäre ich nicht gekommen (hätte die Backslashes von hinten geparst) :thumb:
|
AW: Pfadinhalte eine Ebene aufwärts kopieren
Danke euch allen.
Ich hätte nie gedacht, dass es so viele verschiedene Ansätze gibt. Mein eigentliches Problem ist, dass ich delphizip verwende und aus größeren ZIPfiles nur einige Dateien bzw. Verzeichnisse benötige. Diese sind so eingepackt, dass die Dateien, die ich entpacken will, in einem Unterverzeichnis stehen, beim Auspacken dieser Unterpfad aber stört, so ungefähr im Zipfile unnötiger Pfad\datei(en) unnötiger Pfad\nötiger Pfad\datei(en) unnötiger Pfad\nötiger Pfad\nötiger Pfad\datei(en) ausgepackt soll dann so sein datei(en) nötiger Pfad\datei(en) nötiger Pfad\nötiger Pfad\datei(en) Ich habe bisher keine Möglichkeit im Delphizip gefunden, diesen Pfad schon beim Auspacken zu eliminieren. Von Delphizip möchte ich aber auch nicht wechseln, da ich das in verschiedenen Projekten benutze. Wenn man ein Basisverzeichnis für das Zipfile hätte, vom dem dann alles entzipt werden könnte, wäre das super. Ich hoffe, dass erklärt noch einmal allen, was ich genau machen will. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz