Andreo Fadio
Ветеран
Есть такой пример изменения даты файлов:
Подскажите что поменять, чтобы обрабатывать файлы в подпапках
Код:
[Code]
const
OPEN_EXISTING = 3;
FILE_SHARE_WRITE = 2;
GENERIC_WRITE = $40000000;
INVALID_HANDLE_VALUE = 4294967295;
function CreateFile(lpFileName: string; dwDesiredAccess, dwShareMode,
lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes: DWORD;
hTemplateFile: THandle): THandle;
external 'CreateFile{#A}@kernel32.dll stdcall';
function CloseHandle(hObject: THandle): BOOL;
external 'CloseHandle@kernel32.dll stdcall';
function SetFileTime(hFile: THandle; const lpCreationTime, lpLastAccessTime,
lpLastWriteTime: TFileTime): BOOL;
external 'SetFileTime@kernel32.dll stdcall';
function FileSetTime(const AFileName: string; const ACreationTime,
ALastAccessTime, ALastWriteTime: TFileTime): Boolean;
var
FileHandle: THandle;
begin
Result := False;
FileHandle := CreateFile(AFileName, GENERIC_WRITE, FILE_SHARE_WRITE, 0,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if FileHandle <> INVALID_HANDLE_VALUE then
try
Result := SetFileTime(FileHandle, ACreationTime, ALastAccessTime,
ALastWriteTime);
finally
CloseHandle(FileHandle);
end;
end;
procedure ModifyLastWriteTime(const ASourceFile, ATargetFolder: string);
var
FindRec: TFindRec;
LastWriteTime: TFileTime;
begin
if FindFirst(ASourceFile, FindRec) then
begin
LastWriteTime := FindRec.LastWriteTime;
if FindFirst(ATargetFolder + '*.*', FindRec) then
try
repeat
if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
FileSetTime(ATargetFolder + FindRec.Name, FindRec.CreationTime,
FindRec.LastAccessTime, LastWriteTime);
until
not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end;
end;
//--------
// ModifyLastWriteTime('c:\SourceFile.xxx', 'c:\TargetFolder\')
//--------