//mfc 中删除dir目录下的东东
void cmd_rd(CString dir)
{
要获得程序运行的路径的一个函数:
CString CXXXXXXApp::GetCurDir()
{
TCHAR sDrive[_MAX_DRIVE];
TCHAR sDir[_MAX_DIR];
TCHAR sFilename[_MAX_FNAME],Filename[_MAX_FNAME];
TCHAR sExt[_MAX_EXT];
GetModuleFileName(AfxGetInstanceHandle(), Filename, _MAX_PATH);
_tsplitpath(Filename, sDrive, sDir, sFilename, sExt);
CString homeDir(CString(sDrive) + CString(sDir));
int nLen = homeDir.GetLength();
if(homeDir.GetAt(nLen-1) != _T('//'))
homeDir += _T('//');
return homeDir;
}
WIN32_FIND_DATA Sr;
HANDLE Handle;
int iattr;
//如果是目录
iattr=GetFileAttributes(dir);
if(iattr==FILE_ATTRIBUTE_DIRECTORY)
{
try
{
Handle=::FindFirstFile(dir+"//*.*", &Sr);
}
catch(...)
{
return;
}
if (Handle)
{
do
{
if (Sr.cFileName[0]!='.')
{
if(Sr.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
cmd_rd(dir+" //"+Sr.cFileName );
}
else
{
::SetFileAttributes(dir+" //"+Sr.cFileName,0 );
::DeleteFile(dir+" //"+Sr.cFileName );
}
}
} while (::FindNextFile(Handle,&Sr));
::FindClose(Handle);
}
if(iattr==FILE_ATTRIBUTE_DIRECTORY)
::RemoveDirectory(dir);
}
else
{
::SetFileAttributes(dir,0);
::DeleteFile(dir);
}
{
if (Sr.cFileName[0]!='.')
{
if(Sr.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
cmd_rd(dir+" //"+Sr.cFileName );
}
else
{
::SetFileAttributes(dir+" //"+Sr.cFileName,0 );
::DeleteFile(dir+" //"+Sr.cFileName );
}
}
} while (::FindNextFile(Handle,&Sr));
::FindClose(Handle);
}
if(iattr==FILE_ATTRIBUTE_DIRECTORY)
::RemoveDirectory(dir);
}
else
{
::SetFileAttributes(dir,0);
::DeleteFile(dir);
}
}
//mfc 下的控制台清屏
void cmd_cls(HANDLE hConsole)
{
COORD coordScreen = { 0, 0 }; // home for the cursor
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
// Get the number of character cells in the current buffer.
if( !GetConsoleScreenBufferInfo( hConsole, &csbi ))
return;
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
// Fill the entire screen with blanks.
if( !FillConsoleOutputCharacter( hConsole, (TCHAR) ' ',
dwConSize, coordScreen, &cCharsWritten ))
return;
// Get the current text attribute.
if( !GetConsoleScreenBufferInfo( hConsole, &csbi ))
return;
// Set the buffer's attributes accordingly.
if( !FillConsoleOutputAttribute( hConsole, csbi.wAttributes,
dwConSize, coordScreen, &cCharsWritten ))
return;
// Put the cursor at its home coordinates.
SetConsoleCursorPosition( hConsole, coordScreen );
}
//MFC中拷贝文件夹
void cmd_xcopy(char* src,char* dst)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char tmpsrc[256];
strcpy(tmpsrc,src);
strcat(tmpsrc,"//*.*");
hFind = FindFirstFile(tmpsrc, &FindFileData);
if(hFind == INVALID_HANDLE_VALUE)
return;
CreateDirectory(dst,0);
do
{
char newdst[256];
strcpy(newdst,dst);
if(newdst[strlen(newdst)]!='//')
strcat(newdst,"//");
strcat(newdst,FindFileData.cFileName);
HANDLE hFind;
char tmpsrc[256];
strcpy(tmpsrc,src);
strcat(tmpsrc,"//*.*");
hFind = FindFirstFile(tmpsrc, &FindFileData);
if(hFind == INVALID_HANDLE_VALUE)
return;
CreateDirectory(dst,0);
do
{
char newdst[256];
strcpy(newdst,dst);
if(newdst[strlen(newdst)]!='//')
strcat(newdst,"//");
strcat(newdst,FindFileData.cFileName);
char newsrc[256];
strcpy(newsrc,src);
if(newsrc[strlen(newsrc)]!='//')
strcat(newsrc,"//");
strcat(newsrc,FindFileData.cFileName);
if(FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
if(strcmp(FindFileData.cFileName,".")!=0&&strcmp(FindFileData.cFileName,"..")!=0)
{
cmd_xcopy(newsrc,newdst);
}
}else
{
CopyFile(newsrc,newdst,false);
}
}while(FindNextFile(hFind,&FindFileData));
FindClose(hFind);
}
//MFC中创建目录
BOOL WinCmd::cmd_md(char* lpPath)
{
{
CString pathname = lpPath;
if(pathname.Right(1) != "//")
pathname += "//" ;
int end = pathname.ReverseFind('//');
int pt = pathname.Find("//");
if (pathname[pt-1] == ':')
pt = pathname.Find("//", pt+1);
CString path;
while(pt != -1 && pt<=end)
{
path = pathname.Left(pt+1);
if(_access(path, 0) == -1)
_mkdir(path);
pt = pathname.Find("//", pt+1);
while(pt != -1 && pt<=end)
{
path = pathname.Left(pt+1);
if(_access(path, 0) == -1)
_mkdir(path);
pt = pathname.Find("//", pt+1);
}
return true;
}