![]() |
Verzeichnis / Ordner Erstellungsdatum
Hallo Leute,
ich hab hier schon einiges zum thema Erstllungsdatum von Dateien ändern gefunden, jadoch nichts dazu wie das bei Ordnern funktioniret. Ich möchte einen ordner kopieren und es sollen alle Ordner und Unterordner das alte Erstellungsdatum behalten. Habe mich schon damit abgefunden das das nicht so leicht ist, und ich die kopierten Ordner nachträglich bearbeiten muss, aber wie? Danke schon mal im Voraus! |
Re: Verzeichnis / Ordner Erstellungsdatum
na ganz genauso, nur daß man dort ganz einfach das Handle eines Ordners verwendet, anstatt das einer Datei :zwinker:
|
Re: Verzeichnis / Ordner Erstellungsdatum
Habe ein wenig rumprobiert, das ist dabei raus gekommen:
Delphi-Quellcode:
aber SetFileTime schlägt immer fehl :gruebel:
procedure TForm1.Button1Click(Sender: TObject);
var aHandle: THandle; FindData, FindData2: TWIN32FindData; begin FindFirstFile('c:\abc', FindData); // Zeitstempel lesen DoFileWork(FO_COPY, 'c:\abc', 'd:\abc', FOF_SILENT or FOF_NOERRORUI); //Kopieren aHandle := FindFirstFile('d:\abc', FindData2); //Handle holen SetFileTime(aHandle, @FindData.ftCreationTime, @FindData.ftLastAccessTime, @FindData.ftLastWriteTime); //Zeitstempel schreiben end; |
Re: Verzeichnis / Ordner Erstellungsdatum
FindFirstFile liefert das Handle des Suchergebnisses
CreateFile wäre hier passender (laß dich vom File im Namen nicht irreleiten, ein Verzeichnis ist ja im Prinzip auch nur 'ne Datei) |
Re: Verzeichnis / Ordner Erstellungsdatum
Das habe ich auch schon versucht:
Delphi-Quellcode:
Es liefert aber sowohl GetFileTime als auch SetFileTime False zurück.
procedure TForm1.Button1Click(Sender: TObject);
var aHandle: THandle; LastAccessTime, CreationTime, LastWriteTime: TFileTime; begin aHandle := CreateFile('c:\abc', FILE_READ_ATTRIBUTES, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Edit1.Text := BoolToStr(GetFileTime(aHandle, @CreationTime, @LastAccessTime, @LastWriteTime)); DoFileWork(FO_COPY, 'c:\abc', 'd:\abc', FOF_SILENT or FOF_NOERRORUI); aHandle := CreateFile('d:\abc', FILE_WRITE_ATTRIBUTES, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Edit2.Text := BoolToStr(SetFileTime(aHandle, @CreationTime, @LastAccessTime, @LastWriteTime)); end; Hab auch schon versucht den Dateinamen mit \ zu beenden ('c:\abc\') geht aber auch nicht. (Is bestimmt irgend etwas total banales, aber ich komm einfach nicht drauf...) |
Re: Verzeichnis / Ordner Erstellungsdatum
Zitat:
|
Re: Verzeichnis / Ordner Erstellungsdatum
Hab es auch mit
Delphi-Quellcode:
und
aHandle := CreateFile('c:\abc', FILE_WRITE_ATTRIBUTES, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_DIRECTORY, 0);
Delphi-Quellcode:
versucht, gibt aber das selbe ergebniss :(
aHandle := CreateFile('c:\abc', FILE_WRITE_ATTRIBUTES, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
|
Re: Verzeichnis / Ordner Erstellungsdatum
ich glaub da sind dieses Zitate wichtiger
Zitat:
Zitat:
Delphi-Quellcode:
aHandle := CreateFile('c:\abc', FILE_READ_ATTRIBUTES,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); if aHandle <> INVALID_HANDLE_VALUE then begin end else ShowMessage(SysErrorMessage(GetLastError)); |
Re: Verzeichnis / Ordner Erstellungsdatum
Immer alles vorsagen, dabei kann doch jeder selbst nachlesen :tongue:
|
Re: Verzeichnis / Ordner Erstellungsdatum
Danke!
Das funktioniert einwandfrei :) Hier noch der Code für alle die noch auf dieses problem stoßen...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var aHandle: THandle; LastAccessTime, CreationTime, LastWriteTime: TFileTime; begin aHandle := CreateFile('c:\abc', FILE_READ_ATTRIBUTES, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); GetFileTime(aHandle, @CreationTime, @LastAccessTime, @LastWriteTime); DoFileWork(FO_COPY, 'c:\abc', 'd:\abc', FOF_SILENT or FOF_NOERRORUI); aHandle := CreateFile('d:\abc', FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); SetFileTime(aHandle, @CreationTime, @LastAccessTime, @LastWriteTime); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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 by Thomas Breitkreuz