#include <windows.h>
int get_ParamDate(char *, SYSTEMTIME *);
int main(int argc, char **argv)
{
SYSTEMTIME system_time;
FILETIME CreationTime;
FILETIME LastAccessTime;
FILETIME LastWriteTime;
FILETIME w_FileTime;
HANDLE handle = INVALID_HANDLE_VALUE;
BOOL brts;
int irts;
int size;
char fullpath[MAX_PATH];
if(argc == 1 || argc >= 4) {
return -1;
}
GetLocalTime(&system_time);
if(argc == 3) {
irts = get_ParamDate(argv[2], &system_time);
}
brts = SystemTimeToFileTime(&system_time, &w_FileTime);
if(brts == FALSE) {
return -1;
}
brts = LocalFileTimeToFileTime(&w_FileTime, &CreationTime);
LastAccessTime = CreationTime;
LastWriteTime = CreationTime;
memset(fullpath, 0x00, sizeof(fullpath));
size = GetCurrentDirectory(sizeof(fullpath), fullpath);
strcat(fullpath, "\\");
strcat(fullpath, argv[1]);
handle = CreateFile(fullpath,
GENERIC_WRITE,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_FLAG_BACKUP_SEMANTICS,
NULL);
if(handle == INVALID_HANDLE_VALUE) {
return -1;
}
brts = SetFileTime(handle,
&CreationTime,
&LastAccessTime,
&LastWriteTime);
brts = CloseHandle(handle);
if(brts == FALSE) {
return -1;
}
return 0;
}
int get_ParamDate(char *work, SYSTEMTIME *system_time)
{
int size;
char CC[4];
char YY[4];
char MM[4];
char DD[4];
char hh[4];
char mm[4];
char SS[4];
memset(CC, 0x00, sizeof(CC));
memset(YY, 0x00, sizeof(YY));
memset(MM, 0x00, sizeof(MM));
memset(DD, 0x00, sizeof(DD));
memset(hh, 0x00, sizeof(hh));
memset(mm, 0x00, sizeof(mm));
memset(SS, 0x00, sizeof(SS));
size = strlen(work);
if(size == 15 && work[12] == '.') {
memcpy(SS, &work[13], 2);
size = 12;
}
else if(size == 13 && work[10] == '.') {
memcpy(SS, &work[11], 2);
size = 10;
}
else if(size == 11 && work[8] == '.') {
memcpy(SS, &work[9], 2);
size = 8;
}
else {
strcpy(SS, "00");
}
if(size == 12) {
memcpy(CC, &work[0], 2);
memcpy(YY, &work[2], 2);
memcpy(MM, &work[4], 2);
memcpy(DD, &work[6], 2);
memcpy(hh, &work[8], 2);
memcpy(mm, &work[10], 2);
}
else if(size == 10) {
memcpy(YY, &work[0], 2);
memcpy(MM, &work[2], 2);
memcpy(DD, &work[4], 2);
memcpy(hh, &work[6], 2);
memcpy(mm, &work[8], 2);
}
else if(size == 8) {
memcpy(MM, &work[0], 2);
memcpy(DD, &work[2], 2);
memcpy(hh, &work[4], 2);
memcpy(mm, &work[6], 2);
}
if(CC[0] == 0x00) {
if(YY[0] == 0x00) {
;
}
else {
system_time->wYear = system_time->wYear / 100 * 100;
system_time->wYear += atoi(YY);
}
}
else if(YY[0] != 0x00) {
system_time->wYear = atoi(CC) * 100 + atoi(YY);
}
system_time->wMonth = atoi(MM);
system_time->wDay = atoi(DD);
system_time->wHour = atoi(hh);
system_time->wMinute = atoi(mm);
system_time->wSecond = atoi(SS);
system_time->wMilliseconds = 0;
return 0;
}