using System;
using System.IO;
class Program {
static void Info(string ErrorMsg)
{
if (ErrorMsg != null)
{
Console.WriteLine("Fehler: {0}", ErrorMsg);
Console.WriteLine();
}
string sExecutable = Environment.CommandLine;
int p = sExecutable.IndexOf(" ");
if (p > 0) {
sExecutable = sExecutable.Substring(0, p);
}
Console.WriteLine("Aufruf: {0} [-s] [Verzeichnis]", sExecutable);
Console.WriteLine();
Console.WriteLine(" [-s] Es werden auch Unterverzeichnisse angezeigt, welche zwar keine");
Console.WriteLine(" Dateien, aber weitere Unterverzeichnisse enthalten");
Console.WriteLine(" [Verzeichnis] Wurzelverzeichnis");
Console.WriteLine();
}
static void Main(string[] args)
{
string sRootDirectory = null;
bool bFindWithoutSubdirectories = true;
foreach (string arg in args)
{
if (arg.StartsWith("-") || arg.StartsWith("/"))
{
string argl = arg.Substring(1).ToLower();
if (argl == "s")
{
bFindWithoutSubdirectories = false;
}
else
{
Info("Falscher Parameter: " + arg);
return;
}
}
else
{
if (sRootDirectory != null)
{
Info("Falscher Parameter: " + arg);
return;
}
sRootDirectory = arg;
}
}
if (sRootDirectory == null)
{
sRootDirectory = Environment.CurrentDirectory;
}
string[] DirectoryList = Directory.GetDirectories(sRootDirectory, "*.*", SearchOption.AllDirectories);
foreach (string sDirectory in DirectoryList)
{
if (Directory.GetFiles(sDirectory).Length > 0) continue; // Dateien gefunden
if (bFindWithoutSubdirectories)
{
if (Directory.GetDirectories(sDirectory).Length > 0) continue; // Unterverzeichnisse gefunden
}
Console.WriteLine(sDirectory);
}
}
}