1.MFC方法:
//参数 szRootPath要查找的根结点,不带最后的"\"
void CFindfileDlg::FindFile(const char *szRootPath)
{
WIN32_FIND_DATA findData;
CString strFileName= szRootPath;
strFileName += "\\*.*"; //注:这里可以用通配符,( *.txt, a?.txt等)
HANDLE hFind=FindFirstFile( strFileName, &findData );
BOOL bFind = hFind ? TRUE : FALSE;
while ( bFind )
{
if( findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
CString strroot;
strroot.Format( "%s\\%s", szRootPath, findData.cFileName );
if( strcmp( findData.cFileName, "..") && strcmp( findData.cFileName, ".") )
FindFile( strroot ); //递归
}
else
{
CString strShow;
strShow.Format( "%s\\%s", szRootPath, findData.cFileName );
ShowFile( strShow ); //查找到的文件名
}
bFind = FindNextFile( hFind, &findData );
}
}
2.批处理方法.(批处理不会,以下代码上以前在网上找的),示例:在当前文件夹及子文件夹删除后缀为.tree的文件.
::@echo off
rem 正在搜索...
rem 删除文件
for /f "delims=" %%i in ('dir /b /a-d /s "*.tree"') do del %%i
rem 删除完毕
pause