在文件a.c中复制下方代码,gcc编译后产生a.exe:
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
int main(int argc, char *argv[])
{
//传参格式:filetime.exe test.txt 2011-01-08 17:00:33
SYSTEMTIME spec_time;
sscanf(argv[2], "%d-%d-%d", &spec_time.wYear, &spec_time.wMonth, &spec_time.wDay);
sscanf(argv[3], "%d:%d:%d", &spec_time.wHour, &spec_time.wMinute , &spec_time.wSecond);
spec_time.wDayOfWeek = 1;
spec_time.wMilliseconds = 0;
HANDLE hFile = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("Get file handle failed,error = %s\n", GetLastError());
return -1;
}
FILETIME ft, LocalFileTime;
SystemTimeToFileTime(&spec_time, &ft);
LocalFileTimeToFileTime(&ft, &LocalFileTime);
if(SetFileTime(hFile, &LocalFileTime, &LocalFileTime, &LocalFileTime))
{
printf("success\n");
}
else
{
printf("fail\n");
}
CloseHandle(hFile);
return 0;
}
使用方式,shell内执行:
a.exe 你想更改的文件名 2000-01-01 20:00:00
即可将文件的创建,修改,访问时间更改为2000-01-01 20:00:00
配合FileZilla的更改时间戳功能,可以将ftp迟交的作业伪装成按时提交。
本文介绍了一个简单的C程序,用于通过命令行更改指定文件的创建、修改和访问时间。该程序利用Windows API函数SetFileTime来实现时间戳的修改,并通过命令行参数接收目标文件名及期望的时间。
9272

被折叠的 条评论
为什么被折叠?



