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

VB.NET Discussion :

Déplacement de fichier [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Déplacement de fichier
    bonjour,
    j'ai des fichiers log qui contiennent la sauvegarde des agents d'une entreprise.
    on m'a donnée plusieurs conditions:
    on me dit que si 10 jours passe et que la sauvegarde n'a pas été renouvelé, afficher un msg de rappel à l'administrateur, et faire de même au bout d'un mois donc 30jours.
    c'est se que je fais !!!
    je voudrai donc faire ceci:
    -créer un dossier.
    -une fois que la sauvegarde aura passé les 30jours, je veux déplacé le fichier log dans le nouveau dossier créer plus haut et faire cela pour chaque fichier qui a passé les 30jours
    - et je souhaiterais aussi, relevé toute les choses que je fais, exemple : le fichier de toto a passé le délai de 30 jours donc le fichier a été supprimé le 10/07/2013 à 10h
    comment faire??

    voici mon code pour le moment:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Imports System.IO
    Public Class datemodif
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Dim la_date As Date = IO.File.GetLastWriteTime("C:\...")              'on récupère la dernière date de modification du fichier log
     
            Dim dalaiMax1 As Long = 30
     
            Dim delaiMax2 As Long = 10
     
            ' si il n'y a pas de sauvegarde après 30 jours supprimer dossier agent(enfaite le dossier sera déplacé)
     
            If System.IO.Directory.Exists("fichier déplacé") = False Then
     
                System.IO.Directory.CreateDirectory("fichier déplacé")
     
            End If
     
     
            If DateDiff(DateInterval.Day, la_date, Now) > dalaiMax1 Then
     
     
                MsgBox("Attention la sauvegarde n'a pas été réalisé, il y a maintenant  (" & DateDiff(DateInterval.Day, la_date, Now) & " JOURS)")
     
     
            ElseIf DateDiff(DateInterval.Day, la_date, Now) > delaiMax2 Then
     
                MsgBox("Attention la sauvegarde n'a pas été réalisé, il y a maintenant  (" & DateDiff(DateInterval.Day, la_date, Now) & " JOURS)")
     
     
     
     
            End If
     
        End Sub
     
    End Class

  2. #2
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par steph97139 Voir le message
    -créer un dossier.
    Si je lis ton code, c'est déjà fait.

    Citation Envoyé par steph97139 Voir le message
    -une fois que la sauvegarde aura passé les 30jours, je veux déplacé le fichier log dans le nouveau dossier créer plus haut et faire cela pour chaque fichier qui a passé les 30jours
    Alors après avoir passé le test de DateDiff, tu copies avec CopyFile, si tu es amené à avoir plusieurs logs dans ton dossier, le mieux serait qu'elles ne portent pas le même nom, pour ça je concatène en générale la date du jour au format 04072013 (Ce qui veut dire ne pas lancer 2x le programme dans la même journée car il sera écrasé -> Voir paramètre overwrite de FileCopy, mais tu peux accentuer en concaténant aussi l'heure 040720131053)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      If DateDiff(DateInterval.Day, la_date, Now) > dalaiMax1 Then ' Test de 30 jours
     
     
                    MsgBox("Attention la sauvegarde n'a pas été réalisé, il y a maintenant  (" & DateDiff(DateInterval.Day, la_date, Now) & " JOURS), déplacement de la log")
     
                    FileIO.FileSystem.CopyFile("C:\TaLog.txt", "C:\fichier déplacé\TaLog" & Date.Now.Date & ".txt", True) 'On concatene le nom avec la date du jour pour éviter qu'il ne porte le même nom (Nb: Si le programme est lancé 2x dans la journée, l'ancien est écrasé par le nouveau)
                    FileIO.FileSystem.DeleteFile("C:\TaLog.txt") 'On supprime l'ancien
     
                    sauverInformation("C:\Rapport.txt", Date.Now, "Déplacement de la log car le délai de 30 jours est écoulé")
    Si tu te demandes d'où sort sauverInformation, c'est pour répondre à ton 3éme point :

    Citation Envoyé par steph97139 Voir le message
    - et je souhaiterais aussi, relevé toute les choses que je fais, exemple : le fichier de toto a passé le délai de 30 jours donc le fichier a été supprimé le 10/07/2013 à 10h
    comment faire??
    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
    20
    21
    22
        ''' <summary>
        ''' Permet d'enregistrer des informations dans un fichier texte
        ''' </summary>
        ''' <param name="PathRapport">Le chemin du fichier texte (ex : C:\Rapport.txt)</param>
        ''' <param name="DateDuJour">La Date du jour</param>
        ''' <param name="information">Le texte à enregistrer</param>
        Private Sub sauverInformation(PathRapport As String, DateDuJour As Date, information As String)
            Dim RapportSW As StreamWriter = New StreamWriter(PathRapport, True)
     
            If System.IO.File.Exists(PathRapport) Then
     
                RapportSW.WriteLine("Action le " & DateDuJour.Date.ToString & " à " & DateDuJour.TimeOfDay.ToString)
                RapportSW.WriteLine("Information : " & information)
                RapportSW.WriteLine(" ")
     
                RapportSW.Close()
            Else
     
                Throw New System.Exception("Rapport non trouvé à l'adresse " & PathRapport)
     
            End If
        End Sub


    Ce qui donne au total avec quelques modification de ton code (des tests pour vérifier que la log soit là avant d'essayer de récupérer la date de modif, déplacement pour logique/lisibilité)

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
     
        ''' <summary>
        ''' Permet d'enregistrer des informations dans un fichier texte
        ''' </summary>
        ''' <param name="PathRapport">Le chemin du fichier texte (ex : C:\Rapport.txt)</param>
        ''' <param name="DateDuJour">La Date du jour</param>
        ''' <param name="information">Le texte à enregistrer</param>
        Private Sub sauverInformation(PathRapport As String, DateDuJour As Date, information As String)
            Dim RapportSW As StreamWriter = New StreamWriter(PathRapport, True)
     
            If System.IO.File.Exists(PathRapport) Then
     
                RapportSW.WriteLine("Action le " & DateDuJour.Date.ToString & " à " & DateDuJour.TimeOfDay.ToString)
                RapportSW.WriteLine("Information : " & information)
                RapportSW.WriteLine(" ")
     
                RapportSW.Close()
            Else
     
                Throw New System.Exception("Rapport non trouvé à l'adresse " & PathRapport)
     
            End If
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim la_date As Date             'on récupère la dernière date de modification du fichier log
            Dim dalaiMax1 As Long = 30
            Dim delaiMax2 As Long = 10
            Dim logPath As String = "C:\Talog.txt"
     
     
            If System.IO.Directory.Exists("C:\fichier déplacé") = False Then
     
                System.IO.Directory.CreateDirectory("C:\fichier déplacé")
     
            End If
     
     
            If System.IO.File.Exists(logPath) Then 'On teste que la log soit bien présente
     
                la_date = IO.File.GetLastWriteTime(logPath) 'On récupere la date de dernière modif
     
                If DateDiff(DateInterval.Day, la_date, Now) > dalaiMax1 Then ' Test de 30 jours
     
     
                    MsgBox("Attention la sauvegarde n'a pas été réalisé, il y a maintenant  (" & DateDiff(DateInterval.Day, la_date, Now) & " JOURS), déplacement de la log")
     
                    FileIO.FileSystem.CopyFile(logPath, "C:\fichier déplacé\TaLog" & Date.Today.ToString.Replace("/", "").Substring(0, 8) & ".txt", True) 'On concatene le nom avec la date du jour pour éviter qu'il ne porte le même nom (Nb: Si le programme est lancé 2x dans la journée, l'ancien est écrasé par le nouveau)
                    FileIO.FileSystem.DeleteFile(logPath) 'On supprime l'ancien
     
                    sauverInformation("C:\Rapport.txt", Date.Now, "Déplacement de la log car le délai de 30 jours est écoulé")
     
     
                ElseIf DateDiff(DateInterval.Day, la_date, Now) > delaiMax2 Then
     
                    MsgBox("Attention la sauvegarde n'a pas été réalisé, il y a maintenant  (" & DateDiff(DateInterval.Day, la_date, Now) & " JOURS)")
     
                End If
     
            Else
     
                MsgBox("Pas de log trouvé au chemin " & logPath, MsgBoxStyle.Critical)
     
            End If
    End Sub
    Ps : Code non testé
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  3. #3
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    le mieux serait qu'elles ne portent pas le même nom, pour ça je concatène en générale la date du jour au format 04072013
    Bonne idée , mais par expérience il est mieux de mettre la date au format ISO : YYYY-MM-DD
    Pourquoi? Si vous triez votre dossier par nom de fichier, il se trierons chronologiquement ce qui n'est pas le cas avec une date au format DDMMYYYY

  4. #4
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Sankasssss Voir le message
    Bonne idée , mais par expérience il est mieux de mettre la date au format ISO : YYYY-MM-DD
    Pourquoi? Si vous trier votre dossier par nom de fichier, il se trierons chronologiquement ce qui n'est pas le cas avec une date au format DDMMYYYY
    Super bonne idée.
    C'est noté et ça me resservira
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2013
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    merci de votre aide, la je pense que je peux finir mon projet avec un peu plus de simplicité !

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

Discussions similaires

  1. Problème de déplacement de fichier sur le Disque Dur
    Par DeFCrew dans le forum Sécurité
    Réponses: 8
    Dernier message: 11/09/2006, 11h44
  2. [Configuration] Déplacement de fichier d'un domaine vers un sous-domaine
    Par Christophe Charron dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 22/06/2006, 15h35
  3. Réponses: 4
    Dernier message: 18/05/2006, 15h00
  4. Déplacement de fichiers
    Par sourivore dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 03/05/2006, 11h48
  5. Réponses: 16
    Dernier message: 25/11/2004, 12h34

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