Я пытаюсь написать утилиту командной строки на C #, похожую на команду Linux du. Эта утилита в идеале должна передавать один или несколько путей в качестве аргументов.
Предполагается, что в каталоге c: \ project есть подкаталоги с именами от 0000 до 9999, а у каждого из этих каталогов есть дочерние каталоги, такие как геодезические, инженерные, подземные, архитектурные.
Ex:
utlity.exe f: \ 5 * f: \ 6 * \ 01 5? 780 \ 48 *
Обновление ---
Вот пример функции, которую я пытаюсь написать для расширения путей:
public static string[] ExpandFilePaths(string[] @args)
{
var dirList = new List<string>();
string[] myPath;
foreach (string path in args)
{
int lastSlashPosition;
int firstWildcardPosition = -1;
int firstSplatPosition = path.IndexOf("*");
int firstQuestionPosition = path.IndexOf("?");
// Do we have a wildcard?
if (firstSplatPosition > -1 && firstQuestionPosition > -1)
{
if (firstSplatPosition < firstQuestionPosition)
{
firstWildcardPosition = firstSplatPosition;
}
else
{
firstWildcardPosition = firstQuestionPosition;
}
string prewildcard = path.Substring(0, firstWildcardPosition);
lastSlashPosition = prewildcard.LastIndexOf("\\");
}
else if (firstSplatPosition > -1 && firstQuestionPosition == -1)
{
firstWildcardPosition = firstSplatPosition;
string prewildcard = path.Substring(0, firstWildcardPosition);
lastSlashPosition = prewildcard.LastIndexOf("\\");
}
else if (firstSplatPosition == -1 && firstQuestionPosition > -1)
{
firstWildcardPosition = firstQuestionPosition;
string prewildcard = path.Substring(0, firstWildcardPosition);
lastSlashPosition = prewildcard.LastIndexOf("\\");
}
else
{
lastSlashPosition = path.LastIndexOf("\\");
}
if (lastSlashPosition == -1)
{
myPath = Directory.GetDirectories(".\\", path);
}
else
{
string pathPart = path.Substring(0, lastSlashPosition + 1);
string dirPart = path.Substring(lastSlashPosition + 1);
myPath = Directory.GetDirectories(pathPart, dirPart);
}
foreach (string item in myPath)
{
dirList.Add(item);
}
}
return dirList.ToArray();
}
}
Я продолжаю сталкиваться с проблемами с Directory.GetDirectories (), когда путь содержит несколько подстановочных знаков, например f: \ 8 * \ 01 *.
Я чувствую себя подобно белке, бегающей вокруг дерева, думая, что должен быть лучший путь?
Любая помощь будет оценена. Это не школьное задание, а скорее инструмент, который я буду использовать на работе, который я использую, чтобы научить себя C #.