回复:文件批量移动/重命名工具(6月15日6:30,修正了一个隐含BUG)
嘿嘿,改了一下,在OnButtondo()里面加入了:
/*
BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName, // root path
LPDWORD lpSectorsPerCluster, // sectors per cluster
LPDWORD lpBytesPerSector, // bytes per sector
LPDWORD lpNumberOfFreeClusters, // free clusters
LPDWORD lpTotalNumberOfClusters // total clusters
);
*/
if(MoveToAnotherDriver)
{
GetDlgItemText(IDC_EDITSAVEPATH,SavePath1); //CString SavePath1,Temp2
Temp2 = SavePath1.Left(3);
GetDiskFreeSpace(Temp2,&sePcl,&byPse,&freeCl,&totCl);
FreeSpace = byPse*freeCl*sePcl;
for(i = 0; i < n; i++)
{
m_listD.GetText(i,Temp2);
HANDLE hFile=CreateFile(Temp2,GENERIC_READ,FILE_SHARE_READ,
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile != NULL)
{
Total_FileSize += GetFileSize(hFile,NULL);
}
CloseHandle(hFile);
}
if(FreeSpace < Total_FileSize)
{
MessageBox("目标磁盘空间不足","错误",MB_OK|MB_ICONSTOP);
return;
}
}
//下面是原来的代码
//执行移动操作
if(ReName)
index = ns+n-1;
定义的部分:
DWORD Total_FileSize=0,FreeSpace,sePcl,byPse,freeCl,totCl;
这样加了以后,移动之前就会检测一下目标盘是否有足够空间,不够的话就会拒绝移动的了 XD