во кусок оч старого кода)
Код:
static int ProcessFolder3(int level)
{
HANDLE hFind;
WIN32_FIND_DATA fnd;
bool flag;
int found=0; // have found something in this folder?
hFind = FindFirstFile( "*.*", &fnd );
flag=TRUE;
if (hFind != INVALID_HANDLE_VALUE )
while (flag)
{
if ( fnd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
if ( *((short *) &fnd.cFileName[0] ) == 0x002E ) goto b; // skip "."
if ( (*((uint *) &fnd.cFileName[0] ) & 0x00FFFFFF) == 0x002E2E ) goto b; // skip ".."
found++;
if (SetCurrentDirectory(fnd.cFileName))
{
int old_path_len = strlen(my_path);
strcat(my_path, fnd.cFileName); // append this folder name
strcat(my_path, "\\");
int f=ProcessFolder3(level+1);
if (! SetCurrentDirectory(".."))
{
printf("error: can't cd ..\n");
break;
}
my_path[old_path_len] = 0; // trim this folder name
if (!f)
{
if (level) RemoveDirectory(fnd.cFileName);
}
}
else
{
printf("error: can't cd '%s'\n", fnd.cFileName);
break;
}
goto b;
}
strcpy(this_file, fnd.cFileName ); // local
wsprintf( target_file, "%s%s%s", target_path, my_path, fnd.cFileName );
found++;
b:
flag=FindNextFile( hFind, &fnd );
}
else
found = 1; // for safety, do not assume failed directories empty
FindClose(hFind);
return found;
}
не надо его запускать) он если я верно помню стирает пустые вложенные каталоги. Просто как примерчеГ