我要实现的功能是“我这有1万个文件夹,分成每个文件夹三百个子文件夹,数量由用户指定”
(注意,我指的是“文件夹”,不是某个具有后缀的文件。)
因为公司有业务上的需要,做一个这样的小工具能节省人工。
我在MFC中的界面是这样的(非专业开发人员,经验不足,正在学习中!)
这个button按钮的处理事件如下:
void CFileXDlg::OnBnClickedButton1()
{
//获取控件数据
CString strS;
GetDlgItem(IDC_EDIT1)->GetWindowText(strS);
strS+='\0';
CString strD;
GetDlgItem(IDC_EDIT2)->GetWindowText(strD);
strD+='\0';
UpdateData();
UINT num=GetDlgItemInt(IDC_EDIT3),n=2;
CFileFind finder;
BOOL b=finder.FindFile(strS); //获取源路径地址
while(b)
{
if(n>=num)break;else n++; //计数器
b=finder.FindNextFile();
if(finder.IsDirectory()){
CString strFilePath=finder.GetFilePath();
CString strFileName=finder.GetFileName();
strFilePath+='\0'; //不确定这行到底有用没用
SHFILEOPSTRUCT fp;
fp.wFunc=FO_COPY; //FO_MOVE
fp.pFrom=strFilePath;
fp.pTo=strD;
if(SHFileOperation(&fp)==0)
{
::MessageBox(NULL,strFilePath,TEXT("复制成功"),MB_OK);
}else
//失败的提示
}else
MessageBox(CString("这不是目录"));
}
}
这是个半成品,之前在XP上的VC6.0写的,先遍历目录复制,然后删除,达到移动的目的,你可能会问为什么不直接用FO-MOVE ???
说来也奇怪,这个结构体参数,一直用不成,在win10上运行差点要删除我的磁盘分区?难道是XP和Win10的这个API定义不一样吗?