Benutzer mit den meisten Antworten
Bestimmte Ordner aus einem Verzeichnis auslesen

Frage
-
Hallo zusammen,
habe folgendes Problem und hoffe, dass mir einer helfen kann.
Ich arbeite gerade an einem Projekt in meinem Praktikum und muss es nun als Teilaufgabe hinkriegen, dass aus einem Verzeichnis mit vielen Ordnern (alle mit einem Datum der letzten Monate als Ordnername (Bsp: 02.11.2020)) nur die Ordner ausgelesen werden, die in der Range von zwei vom User eingegebenen Daten, sind.
private static void Main(string[] args) { DirectoryInfo d = new DirectoryInfo(@"C:\Path\zum\Problem"); DirectoryInfo[] Ordner = d.GetDirectories(); foreach (DirectoryInfo ordner in Ordner) {
FileInfo[] Files = ordner.GetFiles(); foreach (FileInfo datei in Files) { Console.WriteLine(datei); } Console.ReadKey(); } }
Im Code enthält der Ordner "Problem" diese genannten DatumsOrdner, die ausgelesen werden müssen, aber halt nicht alle, sondern nur die, die vom User "gewollt" sind.
Probiere schon Stunden rum, aber kriege es einfach nicht gebacken.
Ich hoffe, ich habe es verständlich erklärt x). Bin neu in C# und in diesem Forum!
Regards
Eduard
Antworten
-
Hallo Eduard,
wenn ich dich richtig verstanden habe, sollte dich das hier weiterbringen:
public static void Start() { DateTime date1 = new DateTime(2020, 3, 15, 0, 0, 0); DateTime date2 = new DateTime(2020, 8, 22 ,0, 0, 0); foreach (string strDirectory in Directory.GetDirectories(@"C:\Temp")) { var f = strDirectory.Replace(Path.GetDirectoryName(strDirectory) + Path.DirectorySeparatorChar, ""); DateTime FolderDate = DateTime.ParseExact( f, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture); int result1 = DateTime.Compare(FolderDate, date1); int result2 = DateTime.Compare(date2, FolderDate); if (result1 >= 0 && result2 >= 0) { Console.WriteLine("Range von: {0:dd.MM.yyyy}, Folder: {1:dd.MM.yyyy}, Range bis: {2:dd.MM.yyyy}", date1, FolderDate, date2); } } Console.ReadLine(); }
Das sind meine Test-Ordner:
...und das ist die Ausgabe:
Gruß
Stefan
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 16. November 2020 11:53
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 25. November 2020 09:33
Alle Antworten
-
Hallo Eduard,
wenn ich dich richtig verstanden habe, sollte dich das hier weiterbringen:
public static void Start() { DateTime date1 = new DateTime(2020, 3, 15, 0, 0, 0); DateTime date2 = new DateTime(2020, 8, 22 ,0, 0, 0); foreach (string strDirectory in Directory.GetDirectories(@"C:\Temp")) { var f = strDirectory.Replace(Path.GetDirectoryName(strDirectory) + Path.DirectorySeparatorChar, ""); DateTime FolderDate = DateTime.ParseExact( f, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture); int result1 = DateTime.Compare(FolderDate, date1); int result2 = DateTime.Compare(date2, FolderDate); if (result1 >= 0 && result2 >= 0) { Console.WriteLine("Range von: {0:dd.MM.yyyy}, Folder: {1:dd.MM.yyyy}, Range bis: {2:dd.MM.yyyy}", date1, FolderDate, date2); } } Console.ReadLine(); }
Das sind meine Test-Ordner:
...und das ist die Ausgabe:
Gruß
Stefan
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 16. November 2020 11:53
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 25. November 2020 09:33