给你看段纯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++怎样获得系统时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)