//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 #include #include 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; } //-----------------------------------