Dos命令复制文件夹到制定目录:
int GetRootPath(string& sRootPath)
{char fileName[MAX_PATH] = {0};
GetModuleFileNameA(NULL, fileName,MAX_PATH);
std::string createPath = fileName;
std::string::size_type pos = createPath.rfind('\\');
createPath.erase(pos, createPath.size() - pos);
sRootPath = createPath;
return 0;
}
void CopyDirToDir( char * pSrcDir, char * pdesDir )
{
USES_CONVERSION;
std::string sRootPath;
GetRootPath(sRootPath);
CString srcDir = CString( sRootPath.c_str() );
CString desDir = CString(pdesDir);//CString("E:\\tcopy");
CString strCmd = CString(L"XCOPY ") + CString("\"")+srcDir+CString("\"") + CString(" ") + CString("\"")+desDir+CString("\"") + CString(" /e");
//MessageBox(strCmd);
WinExec( W2A(strCmd), SW_SHOW );
}
二:
关于在MFC中的Winexec函数和system函数执行dos命令的区别:
如果是一般的dos命令,winexec更好一些,因为可以隐藏dos界面窗口;
但是在用到echo的时候,system函数更好一些,
如:复制 文件 a 到指定目录,但是指定目录文件a已存在,然后会提示,是否覆盖,如果全部覆盖,选择A;
一般的命令过程是:
1: XCOPY "a.txt" "E:\copy\a.txt"
2: A
如果想在dos命令中一次,写好,可以这样:echo A| XCOPY "a.txt" "E:\copy\a.txt"
但是在MFC中,如果用winexec函数,就没有执行,但是用system就可以,这里需要注意;
删除指定目录及其文件夹下的文件:
转: 百度文章《怎么在dos下删除文件夹》
删除文件夹的方法例如:
你D盘有个文件夹名为bat
删除方法:运行cmd 回车
输入rd d:\bat 回车就行了
删除文件的方法:例如:E盘有个压缩文件名为nest.rar
删除方法:运行cmd 回车
输入del e:\nest.rar 回车就可将这个文件删除.
第一rd只能删除文件夹是不能删除文件的.
第二del 只能删除文件,不能删除文件夹,如果删除文件必须要把文件的格式加上才能删除.
补充问题:如果要删除bat文件夹以下所有文件:
运行cmd
rd /s /qd:\bak
这样bat 以下不管是文件夹还是文件都可以删除的.