Мы заархивировали старые (больше чем 2-летние) файлы на нашем файловом сервере с помощью FSRM для другого каталога путем перемещения и замены файлов символьными ссылками - проблема состоит в том, что символьные ссылки имеют как filedate дата, которую сценарий выполнил - ничто, чтобы сделать с исходным filedate. Пользователи не рады, что половина их файлов имеет ту же дату - действительно ли возможно или изменить дату символьных ссылок, чтобы совпасть с тем из исходных файлов или воссоздать их с нуля с правильной датой? Кто-либо встретился с этой проблемой при архивации с FSRM?
Кажется, что это возможно, но далеко не просто. Приготовьтесь... Я не знаю ни одной утилиты, которая могла бы это сделать, но кто-то взломал какой-то код, который, кажется, работает .
DWORD SetSymLinkTimesW(const wchar_t *filename, const FILETIME *ftc,
const FILETIME *fta, const FILETIME *ftw)
{
DWORD ret;
HANDLE h;
h = CreateFileW(filename, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_FLAG_OPEN_REPARSE_POINT, NULL);
if(h != INVALID_HANDLE_VALUE)
{
if(SetFileTime(h, ftc, fta, ftw) == TRUE)
{
CloseHandle(h);
ret = NO_ERROR;
}
else
{
ret = GetLastError();
CloseHandle(h);
}
}
else
ret = GetLastError();
return ret;
}
I've just copied and pasted your code into a console application and
it successfully changes the timestamps of a symlink for me (Win8.1
32-bit).
int _tmain(int argc, _TCHAR* argv[])
{
FILETIME ft;
GetSystemTimeAsFileTime( &ft );
SetSymLinkTimesW( argv[1], &ft, &ft, &ft );
return 0;
}
DirDate v6.3 теперь реализует это - http://www.datamystic.com/dirdate2.exe
Изменение даты и времени символических ссылок (симлинков), иначе известных как точки перебора файлов
.