阅读背景:

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("
 
 

#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("\0")};
	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\n"),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:\n"));
		wprintf(_T("\t"));
		wprintf(tchCommand0);
		wprintf(_T(" <-dir> d:\\temp\\\n"));
		return -1;
	}
	else
	{
		bRet=IsAscii2Unicode((const char* )argv[1],tchCommand1);
		if(bRet==FALSE)
		{
			wprintf(_T("argv convert fails\n"));
			return -1;
		}
		bRet=IsAscii2Unicode((const char* )argv[2],tchCommand2);
		if(bRet==FALSE)
		{
			wprintf(_T("argv convert fails\n"));
			return -1;
		}
		if((lstrcmp(tchCommand1,_T("-dir"))==0))
			//
		{
			DWORD dwRetSize=ListFolderTotalFileSize(tchCommand2);
			if (dwRetSize==-1)
			{
				_tprintf(_T("Open file failed \n"));
				return 1;
			} 
			else
			{
				
				_tprintf(_T("NUMB SIZE  : %u DIRES \n"),dwTotalFolderNum); 
				_tprintf(_T("NUMB SIZE  : %u FILES \n"),dwTotalFileNum); 
				_tprintf(_T("FILE SIZE  : %u BYTES \n"),lgAllSubFolderFileSize.QuadPart);
				//
				UINT uMaxSize=0;
				if(lgAllSubFolderFileSize.QuadPart<1024)
				{
					uMaxSize=lgAllSubFolderFileSize.QuadPart;
					_tprintf(_T("FILE SIZE : %.4u BYTE \n"),(uMaxSize)); 
				}
				else if ((lgAllSubFolderFileSize.QuadPart>1024)&&(lgAllSubFolderFileSize.QuadPart<1024*1024))
				{
					uMaxSize=lgAllSubFolderFileSize.QuadPart/1024;
					_tprintf(_T("FILE SIZE : %.4u KB \n"),(uMaxSize)); 
				}
				else if((lgAllSubFolderFileSize.QuadPart>1024*1024)&&(lgAllSubFolderFileSize.QuadPart<1024*1024*1024L))
				{
					uMaxSize=lgAllSubFolderFileSize.QuadPart/1024/1024;
					_tprintf(_T("FILE SIZE : %.4u MB \n"),(uMaxSize)); 
				}
				else 
				{
					float fSize;
					fSize=(float)lgAllSubFolderFileSize.QuadPart/1024/1024/1024;
					_tprintf(_T("FILE SIZE : %.2f GB \n"),(fSize)); 
				}
				return 1;
			}
		}
		else
		{
			return 1;
		}
	}
}



")}; 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\n"),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:\n")); wprintf(_T("\t")); wprintf(tchCommand0); wprintf(_T(" <-dir> d:\temp\\n")); return -1; } else { bRet=IsAscii2Unicode((const char* )argv[1],tchCommand1); if(bRet==FALSE) { wprintf(_T("argv convert fails\n")); return -1; } bRet=IsAscii2Unicode((const char* )argv[2],tchCommand2); if(bRet==FALSE) { wprintf(_T("argv convert fails\n")); return -1; } if((lstrcmp(tchCommand1,_T("-dir"))==0)) // { DWORD dwRetSize=ListFolderTotalFileSize(tchCommand2); if (dwRetSize==-1) { _tprintf(_T("Open file failed \n")); return 1; } else { _tprintf(_T("NUMB SIZE : %u DIRES \n"),dwTotalFolderNum); _tprintf(_T("NUMB SIZE : %u FILES \n"),dwTotalFileNum); _tprintf(_T("FILE SIZE : %u BYTES \n"),lgAllSubFolderFileSize.QuadPart); // UINT uMaxSize=0; if(lgAllSubFolderFileSize.QuadPart<1024) { uMaxSize=lgAllSubFolderFileSize.QuadPart; _tprintf(_T("FILE SIZE : %.4u BYTE \n"),(uMaxSize)); } else if ((lgAllSubFolderFileSize.QuadPart>1024)&&(lgAllSubFolderFileSize.QuadPart<1024*1024)) { uMaxSize=lgAllSubFolderFileSize.QuadPart/1024; _tprintf(_T("FILE SIZE : %.4u KB \n"),(uMaxSize)); } else if((lgAllSubFolderFileSize.QuadPart>1024*1024)&&(lgAllSubFolderFileSize.QuadPart<1024*1024*1024L)) { uMaxSize=lgAllSubFolderFileSize.QuadPart/1024/1024; _tprintf(_T("FILE SIZE : %.4u MB \n"),(uMaxSize)); } else { float fSize; fSize=(float)lgAllSubFolderFileSize.QuadPart/1024/1024/1024; _tprintf(_T("FILE SIZE : %.2f GB \n"),(fSize)); } return 1; } } else { return 1; } } }#include <Windows.h> #include <stdio.h> #



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: