Is the Folder empty?
prüfe ob der Ordner leer ist.
- isFolderempty.c
//isFolderempty.exe c:\meinOrdner
//prüfe ob das Verzeichnis leer ist
//ret 0 = Verzeichnis leer
//ret 1 = es sind Unterverzeichnisse vorhanden
//ret 2 = es sind Dateien vorhanden
//ret -1 = Fehler
#include <windows.h>
#include <string.h>
#include <stdio.h>
int isempty(char* );
char* replc(char* ,char,char);
//-------------------------------------
int main(int argc, char *argv[])
{
int ret=-1,i;
if (argc == 2 ) ret = isempty(argv[1]);
printf("%d",ret);
return (ret);
}
//-------------------------------------
// Ist das Verzeichnis leer?
int isempty(char *DirSpec)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
DWORD dwError;
unsigned short j=0,len=0;
len = strlen(DirSpec);
if ((DirSpec[len-1]) == '\"') //Anführungszeichen löschen
{
DirSpec = replc(DirSpec,'\"','\\');
}
if ((DirSpec[len-1]) == '\\')
{ //Backslash anhängen?
strncat (DirSpec, "*", 1);
}
else
{
strncat (DirSpec, "\\*", 3);
}
FindFileData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY;
hFind = FindFirstFile(DirSpec, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
// printf ("Invalid file handle. Error is %u\n", GetLastError());
return (-1);
}
else
{ // if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
//printf ("First file name is %s\n", FindFileData.cFileName);
while (FindNextFile(hFind, &FindFileData) != 0 )
{
j++;
if (j > 1)
{
if (FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY )
{ // Unterverzeichnis vorhanden
return 1;
}
else
{ // Datei vorhanden
return 2;
}
}
}
dwError = GetLastError();
FindClose(hFind);
if (dwError != ERROR_NO_MORE_FILES)
{
// printf ("FindNextFile error. Error is %u\n", dwError);
return (-1);
}
}
return 0;
}
//------------------------------------------------------------
//ersetze Zeichen pat mit Zeichen rep
char* replc(char *src,char pat,char rep)
{
for (int i=0 ;src[i] != '\0'; i++)
if (src[i]==pat)
src[i]=rep;
return src;
}
//-----------------------------------