windows下更改文件创建修改访问时间

本文介绍了一个简单的C程序,用于通过命令行更改指定文件的创建、修改和访问时间。该程序利用Windows API函数SetFileTime来实现时间戳的修改,并通过命令行参数接收目标文件名及期望的时间。

在文件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迟交的作业伪装成按时提交。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值