win32命令行小程序获取指定文件夹或者目录下面的所有文件大小,文件数量,目录数量
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
LARGE_INTEGER lgAllSubFolderFileSize;
LARGE_INTEGER lgEachTempFileSize;
DWORD dwTotalFolderNum=0;
DWORD dwTotalFileNum=0;
int ListFolderTotalFileSize(LPCTSTR lpTempPath)
{
TCHAR tchFindArray[MAX_PATH]= {_T(" ")};
WIN32_FIND_DATA wFileDataAttr;
BOOL bRet;
_tcscpy_s(tchFindArray,MAX_PATH, lpTempPath);
_tcscat_s(tchFindArray,_T("\*.*"));
HANDLE hFind= ::FindFirstFile(tchFindArray,&wFileDataAttr);
if (INVALID_HANDLE_VALUE== hFind)
{
return -1;
}
while (TRUE)
{
if (wFileDataAttr.cFileName[0]!= _T("."))
{
//_tprintf(_T("%s\%s
"),lpTempPath, findFileData.cFileName);
lgEachTempFileSize.LowPart=wFileDataAttr.nFileSizeLow;
lgEachTempFileSize.HighPart=wFileDataAttr.nFileSizeHigh;
lgAllSubFolderFileSize.QuadPart=lgAllSubFolderFileSize.QuadPart+lgEachTempFileSize.QuadPart;
dwTotalFileNum=dwTotalFileNum+1;
if (wFileDataAttr.dwFileAttributes& FILE_ATTRIBUTE_DIRECTORY)
{
_tcscpy_s(tchFindArray,MAX_PATH,lpTempPath);
_tcscat_s(tchFindArray,_T("\"));
_tcscat_s(tchFindArray,wFileDataAttr.cFileName);
dwTotalFolderNum=dwTotalFolderNum+1;
ListFolderTotalFileSize(tchFindArray);
}
}
bRet= ::FindNextFile(hFind,&wFileDataAttr);
if (!bRet)
{
break;
}
}
::FindClose(hFind);
return 1;
}
BOOL IsAscii2Unicode(const char * pstring,TCHAR pwText[])
{
DWORD dwLengthNum = MultiByteToWideChar (CP_ACP, 0, pstring, -1, NULL, 0);
TCHAR *pwTempText = new TCHAR[dwLengthNum+1];
ZeroMemory((PVOID)pwTempText,2*(dwLengthNum+1));
if(pwTempText==NULL)
{
delete[] pwTempText;
pwTempText=NULL;
return FALSE;
}
if(0==MultiByteToWideChar (CP_ACP, 0, pstring, -1, (LPWSTR)pwTempText, dwLengthNum))
{
delete [] pwTempText;
pwTempText=NULL;
return FALSE;
}
else
{
lstrcpy(pwText,pwTempText);
delete [] pwTempText;
pwTempText=NULL;
return TRUE;
}
}
int main(int argc,_TCHAR * argv[])
{
TCHAR tchCommand0[MAX_PATH]={0};
TCHAR tchCommand1[MAX_PATH]={0};
TCHAR tchCommand2[MAX_PATH]={0};
lgAllSubFolderFileSize.QuadPart=0L;
lgEachTempFileSize.QuadPart=0L;
BOOL bRet=IsAscii2Unicode((const char* )argv[0],tchCommand0);
if (argc!=3)
{
wprintf(_T("example:
"));
wprintf(_T(" "));
wprintf(tchCommand0);
wprintf(_T(" <-dir> d:\temp\
"));
return -1;
}
else
{
bRet=IsAscii2Unicode((const char* )argv[1],tchCommand1);
if(bRet==FALSE)
{
wprintf(_T("argv convert fails
"));
return -1;
}
bRet=IsAscii2Unicode((const char* )argv[2],tchCommand2);
if(bRet==FALSE)
{
wprintf(_T("argv convert fails
"));
return -1;
}
if((lstrcmp(tchCommand1,_T("-dir"))==0))
//
{
DWORD dwRetSize=ListFolderTotalFileSize(tchCommand2);
if (dwRetSize==-1)
{
_tprintf(_T("Open file failed
"));
return 1;
}
else
{
_tprintf(_T("NUMB SIZE : %u DIRES
"),dwTotalFolderNum);
_tprintf(_T("NUMB SIZE : %u FILES
"),dwTotalFileNum);
_tprintf(_T("FILE SIZE : %u BYTES
"),lgAllSubFolderFileSize.QuadPart);
//
UINT uMaxSize=0;
if(lgAllSubFolderFileSize.QuadPart<1024)
{
uMaxSize=lgAllSubFolderFileSize.QuadPart;
_tprintf(_T("FILE SIZE : %.4u BYTE
"),(uMaxSize));
}
else if ((lgAllSubFolderFileSize.QuadPart>1024)&&(lgAllSubFolderFileSize.QuadPart<1024*1024))
{
uMaxSize=lgAllSubFolderFileSize.QuadPart/1024;
_tprintf(_T("FILE SIZE : %.4u KB
"),(uMaxSize));
}
else if((lgAllSubFolderFileSize.QuadPart>1024*1024)&&(lgAllSubFolderFileSize.QuadPart<1024*1024*1024L))
{
uMaxSize=lgAllSubFolderFileSize.QuadPart/1024/1024;
_tprintf(_T("FILE SIZE : %.4u MB
"),(uMaxSize));
}
else
{
float fSize;
fSize=(float)lgAllSubFolderFileSize.QuadPart/1024/1024/1024;
_tprintf(_T("FILE SIZE : %.2f GB
"),(fSize));
}
return 1;
}
}
else
{
return 1;
}
}
}声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: C++ Builder全部常用的API函数大全 (整理收藏)
