VC++获取文件修改时间请写代码举例

VC++获取文件修改时间请写代码举例,第1张

给你看段纯C+SDK代码吧,是创建时间 你把代码看明白 自己稍微改下就是修改时间了

先去吧这个结构体类型整明白WIN32_FILE_ATTRIBUTE_DATA

把GetFileAttributesEx这个API弄明白

     case WM_COMMAND:

if(lParam == (LPARAM)hBtn)

{

GetWindowText(hEdit, buf, 1000);

if(!strlen(buf))

{

MessageBox(hwnd, TEXT("文本框为空!"), TEXT("错误"), MB_OK);

}

else

{

WIN32_FILE_ATTRIBUTE_DATA file_attr;

FILETIME  LocalFileTime;

SYSTEMTIME SysTime;

GetFileAttributesEx(buf, GetFileExInfoStandard, (LPVOID)(&file_attr));

FileTimeToLocalFileTime(&file_attrftCreationTime, &LocalFileTime);//时间转换msdn上拿来主义copy来的

FileTimeToSystemTime(&LocalFileTime, &SysTime);

sprintf(buf, "Time Generated: %02d-%02d-%02d   %02d:%02d:%02d\n",

SysTimewYear, SysTimewMonth, SysTimewDay, 

SysTimewHour, SysTimewMinute, SysTimewSecond);

MessageBox(hwnd, buf, TEXT("文件创建时间为"), MB_OK);

}

}

return 0;

一种方法是使用一个命令行工具叫做 TimeBackexe,它可以修改文件的创建时间和修改时间。您可以下载这个工具,并将它和一个批处理脚本放在同一个文件夹下,然后运行批处理脚本。批处理脚本的内容大致如下:

@echo off

for %%a in (mp4) do (

for /f "tokens=1-6 delims=/: " %%b in ('TimeBack /f "%%a" ^| find "创建时间"') do (

ren "%%a" "%%a-%%b%%c%%d-%%e%%fmp4"

)

)

这个脚本会遍历当前文件夹下的所有 mp4 文件,读取它们的创建时间,并在文件名后面加上日期和时间。如果您想修改时间格式或者其他细节,您可以根据自己的需要修改脚本。

另一种方法是使用一个软件叫做 Bulk Rename Utility,它是一个强大的批量重命名工具,支持多种规则和选项。您可以下载并安装这个软件,然后打开它,选择您想要重命名的 mp4 文件,在右侧的面板中设置好重命名规则,并点击开始按钮。重命名规则中有一个选项叫做 Date (7) ,它可以让您根据文件的创建日期或者修改日期来重命名文件。您可以在这里选择合适的日期格式和分隔符。

typedef struct _SYSTEMTIME {

WORD wYear;

WORD wMonth;

WORD wDayOfWeek;

WORD wDay;

WORD wHour;

WORD wMinute;

WORD wSecond;

WORD wMilliseconds;

} SYSTEMTIME;

可以是这样的一个结构体

Header: Winbaseh

This function retrieves the current system date and time The system time is expressed in UTC

void GetSystemTime(

LPSYSTEMTIME lpSystemTime

);

Parameters

lpSystemTime

[out] Pointer to a SYSTEMTIME structure to receive the current system date and time

Return Values

None

Requirements

OS Versions: Windows CE 10 and later

Header: Winbaseh

Link Library: Coredlllib

#include <windowsh>

// SetFileToCurrentTime - sets last write time to current system time

// Return value - TRUE if successful, FALSE otherwise

// hFile - must be a valid file handle

BOOL SetFileToCurrentTime(HANDLE hFile)

{

FILETIME ft;

SYSTEMTIME st;

BOOL f;

GetSystemTime(&st); // gets current time

SystemTimeToFileTime(&st, &ft); // converts to file time format

f = SetFileTime(hFile, // sets last-write time for file

(LPFILETIME) NULL, (LPFILETIME) NULL, &ft);

return f;

}

通过GetDirTime()来实现对文件夹时间信息的获取

// 获取指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,stime为一

// 指向SYSTEMTIME结构的指针

BOOL CSetForderTimeDlg::GetDirTime(CString DirName, SYSTEMTIME &stime){

// 打开文件夹

HANDLE hDir = CreateFile (DirName, GENERIC_READ,

FILE_SHARE_READ|FILE_SHARE_DELETE,

NULL, OPEN_EXISTING,

FILE_FLAG_BACKUP_SEMANTICS, NULL);

FILETIME lpCreationTime; // 文件夹的创建时间

FILETIME lpLastAccessTime; // 对文件夹的最近访问时间

FILETIME lpLastWriteTime; // 文件夹的最近修改时间

// 获取文件夹时间属性信息

if (GetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime)){

FILETIME ftime;

FileTimeToLocalFileTime(&lpLastWriteTime, &ftime); // 转换成本地时间

FileTimeToSystemTime(&ftime, &stime); // 转换成系统时间格式

}

CloseHandle(hDir); // 关闭打开过的文件夹

return retval;

}

以上就是关于VC++获取文件修改时间请写代码举例全部的内容,包括:VC++获取文件修改时间请写代码举例、怎么批量在视频文件后加创建日期和时间,求大佬写个BAT、C++怎样获得系统时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9582196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存