思路:
调用API!
属于那种API呢?时间--文件----文件时间-----------关于文件操作的API和时间操作的API
文件API
详见platform SDK-----windows Base services-----------Files and I/O--------File I/O
CreateFile----打开文件
时间API
详见platform SDK-----windows Base services------General Library ---------Time
SetFileTime---设置文件时间
但是上面两个函数还不够用
因为SetFileTime的参数FILETIME结构---是文件时间,我知道的时间是系统时间
需要从系统时间(SYSTEMTIME)转化到文件时间(FILETIME)
SystemTimeToFileTime
系统时间是年,月,日...容易填充!
#include <windows.h>
#include <stdio.h>

int main( int argc, char *argv[ ])
{
HANDLE hFile;
FILETIME CreateTime;
SYSTEMTIME st;

if( argc == 1 )
{
printf("SetTime.exe c:/123.txt 2000 10 01 10 10");
return 1;
}

hFile = CreateFile(argv[1],GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);

if (hFile == INVALID_HANDLE_VALUE)
{
puts("Open File Fail!");
return 1;
}
//创建时间
st.wYear = atoi(argv[2]);/*2006*/;
st.wMonth = atoi(argv[3]);
st.wDay = atoi(argv[4]);
st.wHour = atoi(argv[5]) - 8; //0-8 1-9 10-8
st.wMinute =atoi(argv[6]);
st.wSecond = 0;
st.wMilliseconds = 0;
st.wDayOfWeek = 1;

BOOL f = SystemTimeToFileTime(&st, &CreateTime);
// f = SystemTimeToFileTime(&st, &LastWriteTime);
f = SetFileTime(hFile, // sets last-write time for file
&CreateTime, (LPFILETIME) NULL,&CreateTime);

CloseHandle(hFile);
return 0;
}
上面的atoi(argv[5] - 8 )中的-8是如下意思:
wHour (0-23)
0代表8点
1代表9点
所以要减8
调用API!
属于那种API呢?时间--文件----文件时间-----------关于文件操作的API和时间操作的API
文件API
详见platform SDK-----windows Base services-----------Files and I/O--------File I/O
CreateFile----打开文件
时间API
详见platform SDK-----windows Base services------General Library ---------Time
SetFileTime---设置文件时间
但是上面两个函数还不够用
因为SetFileTime的参数FILETIME结构---是文件时间,我知道的时间是系统时间
需要从系统时间(SYSTEMTIME)转化到文件时间(FILETIME)
SystemTimeToFileTime
系统时间是年,月,日...容易填充!
代码如下








































wHour (0-23)
0代表8点
1代表9点
所以要减8