|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 2, 2003 10:17:26 ... есть файл а.txt созданный 13.03.2000 нужно заменить его на b.txt 02.07.2003 НО после этого сделать чтобы b.txt был 13.03.2003 Делаю так GetFileTime(find_handle,&time_last_Create,&time_last_Access,&time_last _Write); DeleteFile(tmp); CopyFile(taget,tmp,TRUE); SetFileTime(find_handle,NULL,NULL,&time_last_Write); depo_sampl=CreateFile(tmp_,GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); SetFileTime(depo_sampl,&time_last_Create,&time_last_Access,&time_last_ Write) ... файл заменяется но дата создания старой не становится. Подскажите пожалуйста . Может фрагментом кода на любом языке если можно. Спасибо. |
|
|
Дата: Июл 2, 2003 11:07:24 · Поправил: P2M У меня работает так:
|
|
|
Дата: Июл 2, 2003 11:23:48 ... Да но задача то какая есть файл , нужно подложить туда другой файл но дату создания нужно оставить старую... значит : 1. GetFileTime 2. time_last_XXX -> в (SYSTEMTIME) 3. (SYSTEMTIME)-> в (FILETIME) 4. (FILETIME) -> в SetFileTime ... получается так ??? |
|
|
Дата: Июл 2, 2003 11:28:35 Я исправил пост (до Вашего ответа). |
|
|
Дата: Июл 2, 2003 11:30:03 ... извините но я коментировал не этот ответ Уважаемого P2M .После обновления страницы коментарий Уважаемого P2M превратился совершенно в другой ... удивительное РЯДОМ!!! Спасибо за код !!! |
|
|
Дата: Июл 2, 2003 11:32:00 А зачем SetFileTime для find_handle? |
|
|
Дата: Июл 2, 2003 11:39:45 ... это find_handle осталось от связки find_handle=FindFirstFile(mask,&ff); ... if (!FindNextFile(find_handle,&ff)) break;... я привел не весь код а только часть из процедуры обхода директорий. |
|
|
Дата: Июл 2, 2003 11:49:09 Т.е. find_handle не от CreateFile и у Вас работала GetFileTime? |
|
|
Дата: Июл 2, 2003 11:54:50 ... приведу весь код#include <windows.h> #include <stdio.h> #include <string.h> #include <winbase.h> #include <conio.h> #include <string.h> FILETIME time_last_Write={0,0}; void Dirr (char *path)//,char *taget { char mask[MAX_PATH],tmp[MAX_PATH],tmp_[MAX_PATH]; //char tmp_gdb[MAX_PATH]; char taget[MAX_PATH]="depo.gdb"; HANDLE find_handle; WIN32_FIND_DATA ff; strcpy (mask,path); strcat (mask,"*.*"); find_handle=FindFirstFile(mask,&ff); if (find_handle==INVALID_HANDLE_VALUE) { printf ("%s\n%s\n","INVALID_HANDLE_VALUE",mask); return; } while (1) { if (ff.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { if (*ff.cFileName!='.') { strcpy(tmp,path); strcat(tmp,ff.cFileName); strcat(tmp,"\\"); Dirr(tmp);//,taget } } else { strcpy(tmp,path); strcpy(tmp_,tmp); strcat(tmp,ff.cFileName); strcat(tmp_,taget); printf("%s\n",tmp); GetFileTime(find_handle,NULL,NULL,&time_last_Write); DeleteFile(tmp); CopyFile(taget,tmp,TRUE); //SetFileTime(Handle, nil, nil, @FileTime) then Exit; //SetFileTime(find_handle,NULL,NULL,&time_last_Write); HANDLE depo_sampl=CreateFile(tmp_,GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); SetFileTime(depo_sampl,NULL,NULL,&time_last_Write); CloseHandle(depo_sampl); } if (!FindNextFile(find_handle,&ff)) break; } FindClose(find_handle); } int main(int argc, char* argv[]) { char path[MAX_PATH]; strcpy(path,argv[1]); strcat(path,"\\"); //strcpy(taget,argv[2]); Dirr (path);//,taget return 0; } |
|
|
Дата: Июл 2, 2003 12:03:51 1. Можно создать каталог начинающийся с "." и "..", поэтому Ваша проверка if (*ff.cFileName!='.') не совсем корректна. 2. Почему Вы не проверяете результат работы GetFileTime, может быть она не работает? |
|
|
Дата: Июл 2, 2003 12:11:55 ... да нет все показало SYSTEMTIME syst_Time={0,0,0,0,0,0,0,0}; ... FileTimeToSystemTime(&ff.ftLastWriteTime,&syst_Time); ... printf(...) и у меня правильная дата последней записи найденного файла :) |
|
|
Дата: Июл 2, 2003 12:19:19 ... printf ("%d.%d.%d\n" ,syst_Time.wDay ,syst_Time.wMonth ,syst_Time.wYear); то есть видимо можно использовать и этот указатель ? |
|
|
Дата: Июл 2, 2003 12:44:38 ... я добавил строку в Ваш код но после отработки файл argv[2] всетаки имеет дату создания argv[1] а хотелось получить дата создания argv[2] а сам файл argv[1]. То есть ДО file1(data1) file2(data2) ПОСЛЕ file1(data1) file1(data2) |
|
|
Дата: Июл 2, 2003 12:46:10 ... я испробовал Ваш код но после отработки файл argv[2] всетаки имеет дату создания argv[1] а хотелось получить дата создания argv[2] а сам файл argv[1]. То есть ДО file1(data1) file2(data2) ПОСЛЕ file1(data1) file1(data2) |
|
|
Дата: Июл 2, 2003 12:48:48 ... а получилось ДО file1(data1) file2(data2) ПОСЛЕ file1(data1) file2(data1) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.090 |