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

Scripts/Batch Discussion :

2 thèmes: Apparition d'une fenêtre en cas d'actualisation du contenu d'un répertoire/Suppression contenu rép.


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut 2 thèmes: Apparition d'une fenêtre en cas d'actualisation du contenu d'un répertoire/Suppression contenu rép.
    Bonjour à tous,

    Je suis confronté à deux problématiques pour lesquelles j'aurais besoin d'aide:

    1. Apparition d'une fenêtre en cas d'actualisation du contenu d'un répertoire

    Je souhaiterais savoir s'il était possible qu'une fenêtre contenant un message personnalisé apparaisse automatiquement lorsque le contenu d'un répertoire est modifié. En effet, je travaille avec un répertoire principale contenant lui même plusieurs fichiers. Ces fichiers sont amenés à être modifiés régulièrement par d'autres utilisateurs. Est-ce possible qu'une fenêtre apparaisse dès qu'un fichier X a été modifié et que le message de la fenêtre stipule "Le fichier X a été modifié" ?

    2. Suppression du contenu d'un répertoire

    Dans un répertoire donné sont enregistrés plusieurs fichiers. Est-ce possible que tout fichier entreposé dans ce répertoire soit automatiquement supprimé 30 jours après sa dernière modification?

    Je vous remercie par avance pour votre aide.

    Cordialement,
    IcarusHDM

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    On peut la faire avec un Vbscript : WMI and File System Monitoring
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    ' VBScript source code
    intInterval = "2"
    strDrive = "E:" 
    strFolder = "\\Test\\"
    strComputer = "." 
    
    ' Connect to WMI
    
    Set objWMIService = GetObject( "winmgmts:" &_ 
        "{impersonationLevel=impersonate}!\\" &_ 
        strComputer & "\root\cimv2" )
    
    ' The query string
    
    strQuery =  _
        "Select * From __InstanceOperationEvent" _
        & " Within " & intInterval _
        & " Where Targetinstance Isa 'CIM_DataFile'" _
        & " And TargetInstance.Drive='" & strDrive & "'"_
        & " And TargetInstance.Path='" & strFolder & "'"
    
    ' Execute the query
    
    Set colEvents = _
        objWMIService. ExecNotificationQuery (strQuery) 
    
    ' The loop
    
    Do 
        ' Wait for the next event  
        ' Get SWbemEventSource object
        ' Get SWbemObject for the target instance
        
        Set objEvent = colEvents.NextEvent()
        Set objTargetInst = objEvent.TargetInstance
        
        ' Check the class name for SWbemEventSource
        ' It cane be one of the following:
        ' - __InstanceCreationEvent
        ' - __INstanceDeletionEvent
        ' - __InstanceModificationEvent
        
        Select Case objEvent.Path_.Class 
            
            ' If it is file creation or deletion event
            ' just echo the file name
            
            Case "__InstanceCreationEvent" 
                WScript.Echo "Created: " & objTargetInst.Name 
    
            Case "__InstanceDeletionEvent" 
                WScript.Echo "Deleted: " & objTargetInst.Name 
            
            ' If it is file modification event, 
            ' compare property values of the target and previous
            ' instance and echo the properties that have changed
            
            Case "__InstanceModificationEvent" 
            
                Set objPrevInst = objEvent.PreviousInstance
            
                For Each objProperty In objTargetInst.Properties_
                    If objProperty.Value <> _
                    objPrevInst.Properties_(objProperty.Name) Then
                        WScript.Echo "Changed:        " _
                            & objTargetInst.Name
                        WScript.Echo "Property:       " _
                            & objProperty.Name
                        WScript.Echo "Previous value: " _
                            & objPrevInst.Properties_(objProperty.Name)
                        WScript.Echo "New value:      " _
                            & objProperty.Value
                        WScript.Echo
                    End If            
                Next
        End Select 
    Loop

    Suppression de fichiers plus vieux de x jours (vbs)

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour hackoofr!

    Merci de ta réponse rapide. Je suis rassuré de voir qu'il est possible de résoudre mes interrogations mais je dois reconnaitre que je n'ai jamais travaillé avec un Vbscript... J'ai donc quelques questions Notamment, quel programme dois-je utiliser et comment je peux faire exécuter des vbscripts...

    1. Pour l'apparition d'une fenêtre suite à la modification du contenu d'un répertoire (contenant lui-même plusieurs répertoire):

    Question1: Comment intégrer le chemin du répertoire voulu dans le Vbscript?
    Le répertoire en question contenant plusieurs sous-répertoire/fichiers est celui-ci: C:\Users\MOI\Desktop\Dossier_Fenetre_TEST

    Question2: Comment personnaliser le message qui apparait dans la fenêtre?
    Lorsqu'un fichier/sous-répertoire a été modifié, je souhaiterais que le message "Le fichier X a été modifié à hh:mm (heure de modification) le JJ (jour de modification)"

    2. Suppression de fichiers plus vieux de x jours

    Question: Comment puis-je indiqué un chemin ciblé dans le vbscript?

    Comme klef63, je souhaiterais que les fichiers dont la derniers modification remonte à maximum 30 jours soient automatiquement supprimés dans un ensemble de sous-dossiers. Le répertoire principal est: C:\Users\MOI\Desktop\Dossier_Suppression

    Question optionnelle: Lorsqu'un fichier a été supprimé, est-il possible qu'une fenêtre affichant le "Le fichier "Nom du fichier" a été supprimé à "Heure de suppression" le "Jour de suppression"?

    Je suis conscient que mes questions sont celles d'un pur débutant mais cela me faciliterait tellement la vie au bureau si ces deux questions pouvaient être résolues.

    Merci d'avance!
    IcarusHDM

  4. #4
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut [VBS] Surveillance.vbs

    Copier et coller ce code dans votre Notepad et enregistrer-le sous le nom Surveillance.vbs puis exécuter-le.
    Pour le chemin, le script, il va le prendre en considération tout seul
    Donc ce script va surveiller juste les fichiers crées ou bien supprimés ou bien modifiés et il vous affiche un message si quelque chose à été changer, et j'ai ajouté la création d'un fichier de journalisation Surveillance.log qui se trouve dans votre dossier Application Data
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    Option Explicit
    Dim fso,Message,Message2,Msg,intInterval,strDrive,strFolder,strComputer,objWMIService,strQuery
    Dim colEvents,objEvent,objTargetInst,objPrevInst,objProperty,ws,LOG_FILE_PATH,LogFile,Chemin
    Set fso = CreateObject("Scripting.FileSystemObject")
    Chemin = Parcourir_Dossier()
    '****************************************************************************************************
    Function Parcourir_Dossier()
        Dim ws,objFolder,Copyright
        Copyright = "[ © Hackoo © 2014 ]"
        Set ws = CreateObject("Shell.Application")
        Set objFolder = ws.BrowseForFolder(0,"Veuillez choisir un dossier pour la surveillance "_
        & Copyright,1,"c:\Programs")
        If objFolder Is Nothing Then
            Wscript.Quit
        End If
        Parcourir_Dossier = objFolder.self.path
    end Function
    '****************************************************************************************************
    Chemin = Split(fso.GetAbsolutePathName(Chemin),":")
    strDrive  = Chemin(0) & ":"
    strFolder = Replace(Chemin(1), "\", "\\")
    If Right(strFolder, 2) <> "\\" Then strFolder = strFolder & "\\"
    strComputer = "." 
    Set ws = CreateObject("WScript.Shell")
    LogFile = Left(Wscript.ScriptName,InstrRev(Wscript.ScriptName, ".")) & "log"
    LOG_FILE_Path = ws.ExpandEnvironmentStrings("%AppData%") & "\" & LogFile
    intInterval = "2"
    'Connexion au WMI
    Set objWMIService = GetObject( "winmgmts:" &_ 
    "{impersonationLevel=impersonate}!\\" &_ 
    strComputer & "\root\cimv2" )
    'La chaîne de la requête
    strQuery =  _
    "Select * From __InstanceOperationEvent" _
    & " Within " & intInterval _
    & " Where Targetinstance Isa 'CIM_DataFile'" _
    & " And TargetInstance.Drive='" & strDrive & "'"_
    & " And TargetInstance.path='" & strFolder & "'"
    'Exécutez la requête
    Set colEvents = _
    objWMIService.ExecNotificationQuery(strQuery)  
    Do 
        Set objEvent = colEvents.NextEvent()
        Set objTargetInst = objEvent.TargetInstance
        Select Case objEvent.path_.Class 
    'Si c'est le cas de la création de fichier ou d'un événement de suppression et afficher
    'juste le nom du fichier
        Case "__InstanceCreationEvent" 
            Message = DblQuote(objTargetInst.Name) & " est crée !"
            Message2 = String(10,"*") & Now & String(10,"*") & vbCrLf & Message & vbCrLf & String(70,"*")
            Call Log(LOG_FILE_Path,Message2)
            MsgBox Message2,VbInformation,Message
        Case "__InstanceDeletionEvent" 
            Message = DblQuote(objTargetInst.Name) & " est supprimé !"
            Message2 = String(10,"*") & Now & String(10,"*") & vbCrLf & Message & vbCrLf & String(70,"*")
            Call Log(LOG_FILE_Path,Message2)
            MsgBox Message2,VbInformation,Message
    'Si c'est le cas de la modification du fichier,comparer les valeurs de propriété de la cible et de l'instance précédente
    'et afficher les propriétés qui ont été changé comme la taille et LastModified
        Case "__InstanceModificationEvent" 
            Set objPrevInst = objEvent.PreviousInstance
            For Each objProperty In objTargetInst.Properties_
                If objProperty.Value <> _
                objPrevInst.Properties_(objProperty.Name) Then
                Message = "Fichier modifié :        " & vbCrLf &_
                objTargetInst.Name & vbCrLf &_
                "Propriétés :       "_
                & objProperty.Name & vbCrLf &_
                "Valeur Précédente : "_
                & objPrevInst.Properties_(objProperty.Name) & vbCrLf &_
                "Nouvelle valeur :      " _
                & objProperty.Value
                Message2 = String(10,"*") & Now & String(10,"*") & vbCrLf & Message & vbCrLf & String(70,"*")
                Call Log(LOG_FILE_Path,Message2)
                MsgBox Message,64,DblQuote(objTargetInst.Name)
            End If    
        Next
    End Select 
    Loop
    '**********************************************************************************************
    Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '**********************************************************************************************
    Sub Log(strLogFileChemin,strLogContent)
    Const APPEND = 8
    Dim objFso,objLogFile
    Set objFso = CreateObject("Scripting.FileSystemObject")
    If Not objFso.FileExists(strLogFileChemin) Then objFso.CreateTextFile(strLogFileChemin, True).Close
    Set objLogFile = objFso.OpenTextFile(strLogFileChemin,APPEND)
    objLogFile.WriteLine strLogContent
    objLogFile.Close
    End Sub 
    '**********************************************************************************************

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Hackoofr,

    Merci pour ce script! Cela se rapproche complètement de l'idée que j'avais en tête! J'ai testé le script aujourd'hui et cela fonctionne.

    Cependant, une fenêtre apparait quasi-automatiquement toutes les 5 secondes pour me spécifier qu'une donnée dans le répertoire a été modifiée, alors que ce n'est pas le cas. Il s'agit d'une donnée système thumbs.db comme ci-dessous:

    Nom : Fenetre_fichier_repertoire_modifié.jpg
Affichages : 1027
Taille : 23,8 Ko

    Comment puis-je cibler les modifications uniquement sur les données contenus dans le répertoire choisi? Il s'agit de données Word uniquement.

    Merci encore une fois!
    IcarusHDM

  6. #6
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut Mise à jour de [VBS] Surveillance.vbs + [VBS] Wscript_Killer_Selector.vbs

    Mise à jour de [VBS] Surveillance.vbs + [VBS] Wscript_Killer_Selector.vbs

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 10
    Points : 13
    Points
    13
    Par défaut Mais comment le lancer au démarrage via GPO, sans à chaque fois devoir choisir le répertoire ?
    Bonjour tout le monde,

    Super le script bravo, mais est-il possible de modifier la version vers un répertoire définitif ?
    actuellement il suffi de fermer la session et le scritp s'arrete ou alors d’éteindre le poste

    A chaque fois nous devons relancer le script et choisir le répertoire.

    Pourrions-nous automatiser ces tâches ?

    Merci par avance pour votre précieuse aide.
    Meilleures salutations.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/03/2012, 13h13
  2. [2007] apparition d'une fenêtre enregistrer sous
    Par Joey Creation dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 02/11/2011, 23h38
  3. Réponses: 1
    Dernier message: 18/11/2010, 17h16
  4. Probleme d'apparition d'une fenêtre
    Par mdordenart dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 17/03/2010, 16h20
  5. Apparition d'une fenêtre lors d'un clic
    Par Premium dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 13/12/2006, 13h05

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