#include <stdio.h>
#include <windows.h>
void ShowFileTime(PFILETIME);
void ShowFileSize(DWORD dwLowsize,DWORD dwHighsize);
void ShowFileAttributes(LPTSTR szFileName);
void FindFile(LPTSTR szFilePath);
BOOL ModifyFilePath(LPTSTR filename,LPTSTR filepath);
void my_main(int argc,LPTSTR argv[]);
WIN32_FILE_ATTRIBUTE_DATA wfad;
WIN32_FIND_DATA wfd;
HANDLE hFile;
TCHAR strPath[MAX_PATH];
int main(int argc,LPTSTR argv[])
{
my_main(argc,argv);
return 0;
}
void ShowFileTime(PFILETIME pftFileTime)
{
FILETIME ftFilelocaltime;
SYSTEMTIME sttime;
FileTimeToLocalFileTime(pftFileTime,&ftFilelocaltime);
FileTimeToSystemTime(&ftFilelocaltime,&sttime);
printf("%#4d-%#2d-%#2d %#2d:%#2d:%#2d\n",
sttime.wYear,sttime.wMonth,sttime.wDay,sttime.wHour,sttime.wMinute,sttime.wSecond);
}
void ShowFileSize(DWORD dwLowsize,DWORD dwHighsize)
{
ULONGLONG ullFilesize = dwHighsize;
ULONGLONG ulldiv = 0;
ULONGLONG ullmod = 0;
ullFilesize <<= 32;
ullFilesize += dwLowsize;
ulldiv = ullFilesize/1024;
ullmod = ullFilesize%1024;
if((ullmod != 0 ) && (ulldiv == 0) )
{
ulldiv = 1;
}
printf("文件:%I64uKB\n",ulldiv);
return;
}
void ShowFileAttributes(LPTSTR szFileName)
{
printf("展示属性:%s\n",szFileName);
if(!GetFileAttributesEx(szFileName,GetFileExInfoStandard,&wfad))
{
printf("获取文件属性失败!错误代码:%d\n",GetLastError());
return;
}
printf("文件创建时间:");
ShowFileTime(&(wfad.ftCreationTime));
printf("文件最后访问时间:");
ShowFileTime(&(wfad.ftLastAccessTime));
printf("文件最后修改时间:");
ShowFileTime(&(wfad.ftLastWriteTime));
ShowFileSize(wfad.nFileSizeLow,wfad.nFileSizeHigh);
return;
}
void FindFile(LPTSTR szFilePath)
{
TCHAR szTempFilePath[MAX_PATH];
TCHAR szSaveFilePath[MAX_PATH];
TCHAR szFullFileName[MAX_PATH];
ZeroMemory(szTempFilePath,MAX_PATH);
ZeroMemory(szSaveFilePath,MAX_PATH);
ZeroMemory(szFullFileName,MAX_PATH);
lstrcpy(szTempFilePath,szFilePath);
lstrcat(szTempFilePath,"*");
printf("%s\n",szTempFilePath);
HANDLE hFile = FindFirstFile(szTempFilePath,&wfd);
if(hFile == INVALID_HANDLE_VALUE)
{
if(GetLastError() == 2)
{
printf("系统找不到指定的文件!\n");
}
}
do
{
lstrcpy(szSaveFilePath,szFilePath);
lstrcpy(szFullFileName,szFilePath);
if(!strcmp(wfd.cFileName,".") || !strcmp(wfd.cFileName,"..") )
{
continue;
}
//printf("文件名:%s\n",wfd.cFileName);
if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
sprintf(szSaveFilePath,"%s%s\\",szFilePath,wfd.cFileName);
FindFile(szSaveFilePath);
}
else
{
sprintf(szFullFileName,"%s%s",szFilePath,wfd.cFileName);
ShowFileAttributes(szFullFileName);
}
}while(FindNextFile(hFile,&wfd));
}
//将文件路径删除文件名,变成目录名
BOOL ModifyFilePath(LPTSTR lpSrcFileName,LPTSTR lpDestFilePath)
{
BOOL bRet = lstrlen(lpSrcFileName) && lpSrcFileName;
LPTSTR pstr = lpSrcFileName;
DWORD npos = 0;
DWORD size = lstrlen(pstr);
if(bRet)
{
for(DWORD index = size;index > 0; index--)
{
if(pstr[index] == '\\')
{
break;
}
else
{
pstr[index] = '\0';
}
}
lstrcpy(lpDestFilePath,pstr);
}
return bRet;
}
void my_main(int argc,LPTSTR argv[])
{
TCHAR filename[MAX_PATH];
ZeroMemory(filename,MAX_PATH);
TCHAR pathname[MAX_PATH];
ZeroMemory(pathname,MAX_PATH);
//FILETIME filelocal;
//SYSTEMTIME st;
if(argc <2)
{
if(!GetModuleFileName(NULL,filename,MAX_PATH))
{
printf("获取当前程序目录失败!错误代码:%d\n",GetLastError());
return;
}
ModifyFilePath(filename,pathname);
printf("第一步,文件名转化为目录:%s\n",pathname);
FindFile(pathname);
}
else
{
printf("参数错误!用法:%s\n",argv[1]);
}
return;
}