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

VBScript Discussion :

Traiter Repertoire avec VBS


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut Traiter Repertoire avec VBS
    Bonjour,

    Je cherche à faire un script VBS qui dans un repertoire recupere tous les fichiers et les met dans un tableu.. il stocke les infos dans un tableau ( nom du fichier + date de creation du fichier).. apres il teste la date de création la plus récente des fichiers... Et puis il renvoie un message de d'erreur ( ou CRITICAL car c'est pour faire du Nagios) dans le cas le ficher le plus récent à 24h.. Pour le moment, j'ai un script qui teste si un fichier dans le repertoire a plus de 24h mais ca bloque quand jai plusieurs fichiers car il renvoie toujours un message d'erreur car il ya des fichiers qui s'accumulent..
    Je vous présente mon script :

    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
    <script language="VBScript"> 
     
    If Wscript.Arguments.Named.Exists("h") Or Wscript.Arguments.Count = 0 Then 
    Wscript.Echo "Plugin help screen:" 
    Wscript.Arguments.ShowUsage() 
    Wscript.Quit(0) 
    End If 
     
    ' Déclaration des variables et constantes 
    '---------------------------------------- 
    strFolder = Wscript.Arguments.Unnamed.Item(0) 
    strMin = wscript.Arguments.Unnamed.Item(1) 
    strMin = Int(strMin) 
     
    Const intOK = 0 
    Const intWarning = 1 
    Const intCritical = 2 
    Const intUnknown = 3 
     
    'Début des tests 
    '--------------- 
    Dim objFSO 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
     
    If objFSO.FolderExists(strFolder) Then 'Vérification si le répertoire existe 
     
    Set objFolder = objFSO.GetFolder(strFolder) 
    set colFiles = objFolder.Files 
    For Each objFile in colFiles 
    If DateDiff("n",objFile.DateLastModified,Now())>strMin Then 
    retour=retour+1 
    End If 
     
    Next 
    If retour>0 then 
    WScript.Echo "Fileage CRITICAL - des fichiers ont plus de " & strMin & " Minutes" 
    Wscript.Quit(intCritical) 
    Else 
    WScript.Echo "Fileage OK - Tous les fichiers ont moins de " & strMin & " Minutes" 
    WScript.Quit(intOK) 
    End If 
    Else 
    Wscript.Echo "Fileage Unknown - le dossier spécifie n existe pas" 
    Wscript.Quit(intUnknown) 
    End If 
    </script>
    Je précise juste que ce sont des fichiers .bak sous format xxx_20080609xxxx.bak avec "20080609" qui est la date de création du fichier.....

    Besoin Urgent SVP...


    Merci

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Besoin Urgent SVP...
    Nous traitons tous les sujets de la même façon car nous considérons qu'ils sont tous urgents. Donc ne crois pas avoir un traitement de faveur parce que tu nous signale que c'est urgent. Tout ce que cela peut faire, c'est nous agacer !!!!

    Le code suivant me semble correcte pour ce que tu veux faire, et il me semble que si cela te renvois une erreur, ce n'est pas à cause de la multiplication de fichiers, mais parce qu'au moins l'un d'entre eux rend la condition vraie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If DateDiff("n",objFile.DateLastModified,Now())>strMin Then 
    retour=retour+1 
    End If

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    Oui je sais désolé si ca du vous agacer.. c'est dans la précipitation que j'ai pu mettre ca... Désolé..

    Pour revenir au problème je sais que l'erreur vient de là en fait. Car il ya au moins un qui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If DateDiff("n",objFile.DateLastModified,Now())>strMin Then 
    retour=retour+1 
    End If
    Mais le pb est que je sais pas cmt, le modifier pour faire ce que je veux faire... gérer la multiplication... tu aurais une idée??

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par delawood Voir le message
    Oui je sais désolé si ca du vous agacer.. c'est dans la précipitation que j'ai pu mettre ca... Désolé..

    Pour revenir au problème je sais que l'erreur vient de là en fait. Car il ya au moins un qui :
    If DateDiff("n",objFile.DateLastModified,Now())>strMin Then
    retour=retour+1
    End If


    Mais le pb est que je sais pas cmt, le modifier pour faire ce que je veux faire... gérer la multiplication... tu aurais une idée??
    Et qu'est ce que tu veux faire ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    je vais essayer de mieux mexpliquer :

    Pour faire simple, je teste des fichiers dans un repertoire qui vérifie sil ya eu des sauvegardes la veille..
    Or avant lorsqueun fichier de sauvegarde était crée il était supprimé le lendemain... Donc le script que je vous ai présenter là, me permet de tester si un fichier avait plus de 24h dans le repertoire.. Et ca ca marchait bien...

    Mais maintenant on a d'autres sauvegardes dans d'autres repertoires.. et je veux utiliser le meme script.. Or dans ce cas, les fichiers de sauvergarde s'accumulent.. Donc mon script là ne marche plus car, il yaura toujours un fichier qui a plus de 24h... Mais il faut que j'arrive à tester si parmi tous ces fichiers crées, il ya un fichier qui a été crée la veille pour voir si la sauvegarde de la veille a marché... c'est plus clair ?
    je sais pas cmt le modifier mon script pour arriver à ca ...

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Bah dans ce cas, il faut à l'aide de Now et d'une des fonctions sur les dates que tu calcul la date d'hier.
    Tu testes dans ta boucle si le fichier a été créée hier, et si c'est le cas, tu appliques ton teste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If DateDiff("n",objFile.DateLastModified,Now())>strMin Then 
    retour=retour+1 
    End If

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    oui jai vu comment faire.. merci pour ton aide... c'est bien avec le Now qu'il faut.. merci...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/05/2006, 17h00
  2. Sélectionner un repertoire avec Windows
    Par SebRs dans le forum Windows
    Réponses: 3
    Dernier message: 31/03/2006, 20h29
  3. Créer un repertoire avec php
    Par cout dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2006, 17h15
  4. [VBS] Ecrire dans les Eventlog avec VBS
    Par Hakkou dans le forum VBScript
    Réponses: 1
    Dernier message: 04/10/2004, 14h50
  5. Réponses: 2
    Dernier message: 08/07/2004, 01h04

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