IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Récupération Nom des sous répertoires puis suppression en fonction de l'ancienneté du répertoire [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 29
    Par défaut Récupération Nom des sous répertoires puis suppression en fonction de l'ancienneté du répertoire
    Bonjour

    Je cherche à récupérer dans un répertoire, le nom de tous les sous-répertoires
    Mes variables sont déclarés en global, je cherche ici à voir tous les sous répertoires de mon répertoire Mère.
    après je lance une boucle foreach
    Mais je n'arrive pas à voir quelle fonction sur system.IO me récupère à chaque fois le nom de mon sous répertoire.

    Mon but étant : on a un répertoire qui contient l'année 2019, à l'intérieur, un répertoire par mois de l'année.
    Je veux faire en sorte de supprimer mon répertoire s'il est antérieur à 6 mois. Pour savoir s'il est antérieur à 6 mois, je joue sur le nom du répertoire (ils ont tous le meme nom (YYYYMMDD-Sous-Répertoire)
    Je vais chercher le YYYYMM dans le nom du sous-répertoire via un content du name du sous répertoire


    Pour que ça soit un peu plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    int n = 6; // Valeur des 6 mois à ne pas dépasser sinon sous-répertoire supprimé.
    string[] dirs = System.IO.Directory.GetDirectories(globalVar.SubPath); // Je déclare mon tableau reprenant tous les sous répertoires de mon répertoire
    foreach(string dir in dirs)
                { 
                    System.IO.Directory.GetName(dir); //Quelle est la fonction pour récup le nom du répertoire ?? (GetName ne fonctionne pas)
                    string anneeMois = dir.content.Substring(0,6); // je récupère le mois et l'année du répertoire
                    int valueAnneeMois = Int32.Parse(anneeMois); // je convertis mon string en int pour faire mon calcul, comment faire pour prendre en compte les nouvelles 
                    années ??
                    if (valueAnneeMois - n < 0)
                    {
                    // On supprime le sous-répertoire
                    System.IO.Directory.Delete(globalVar.SubPath, true);
                    }
    }
    Est ce plus intelligent de créer une variable n qui soit egale à YYYYMM (du jour) pour faire ma comparaison?

    Merci d'avance pour votre aide je mouline sévère...

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Plutôt qu'un Int.Parse() j'utiliserais un DateTime.Parse().

    Ainsi, tu manipules des objets date, et c'est bien plus simple de déterminer si elle date de plus de 6 mois ou non.

    Après, tu as tout intérêt de déclarer une variable avec DateTime.Now.AddMonths(-6) et comparer cette variable plutôt que de refaire le calcul à chaque ligne de ton tableau...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 29
    Par défaut
    Hello,

    Pour mes tests sur les dates je suis passé par TimeSpan en calcul d'intervalle ca marche plutot bien , mais mtn il faut que je trouve le moyen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    DateTime Today = DateTime.Now;
    DateTime x = Today.AddMonths(-6);
    DateTime test = System.IO.Directory.GetCreationTime(RepertoireLog);
    TimeSpan interval = test.Subtract(x);
     
    LogWrite("regardons donc l'interval " + interval, 2);
    LogWrite("regardons interval en jours " + interval.Days, 2);
     int xxx = (int)interval.Days;
     if (xxx < 0)
                {
                    LogWrite("Supprimons le répertoire ! " + xxx, 1);
                    System.IO.Directory.Delete(RepertoireLog, true);
                }
     else 
                {
                    LogWrite("Nous devons garder le répertoire car il date de moins de 6 mois ", 1);
     
                }

    Comment je fais pour récuperer le nom de mes répertoires ?
    Je voudrais faire une boucle en foreach qui va checker chaque répertoire et compare sa date de création pour voir s'il est supérieur à 6 mois et s'il doit etre supprimé...

    J'ai trouvé déja une fonction me permettant de voir tous les fichiers d'un repertoire spécifique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    string strDirectory = globalVar.TEDPath;
     
     
                if (System.IO.Directory.Exists(strDirectory))
                {
     
                    DisplaySubDirectories(strDirectory);
                    LogWrite(strDirectory, 2);
                    System.Console.Read();
                }
                else
                {
                    System.Console.WriteLine("Ce répertoire n'existe pas !");
                }
    Comment je récupère chacun des valeurs des sous repertoires ? Si par exemple leur nom est défini comme "LOGYYYYMM", est ce que je peux recuperer juste leur nom et faire un delete si MM est < à 6 mois ?

    Je débute en C# donc je tatonne sévèreeee

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment afficher les noms des sous-répertoires (et pas des fichiers) ?
    Par Treqz dans le forum Shell et commandes POSIX
    Réponses: 7
    Dernier message: 10/11/2018, 05h46
  2. Réponses: 1
    Dernier message: 14/11/2015, 00h29
  3. Récupération nom des fichiers dans un répertoire
    Par oliviernouhi dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2011, 14h21
  4. Suppression de fichiers dans des sous-répertoires
    Par astrolane dans le forum Langage
    Réponses: 2
    Dernier message: 07/09/2007, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo