Précédent   Forum des professionnels en informatique > Systèmes > Windows > Windows Serveur
Windows Serveur Forum d'entraide professionel pour Windows Serveur : NT, 2000, 2003 , Longhorn...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/03/2007, 18h27   #1
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 1
Points : 1
Par défaut Surveillance création de fichier

Bonjour,

Je veux créer une tâche qui surveille un répertoire dans lequel arrivent régulièrement des fichiers.
Lorsqu'un type de fichier en particulier arrive, cette tâche doit effectuer une action sur ce fichier. Le type de fichier est repéré par son nom qui commence toujours avec la même chaine de caractères (par exemple file****). J'utilise un programme qui s'appuie sur WMI dont voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Set objShell = CreateObject("Wscript.Shell")

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _
        & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
            & "TargetInstance.GroupComponent= " _
                & "'Win32_Directory.Name=""c:\\\\TEST1""'")

Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    strNewFile = objLatestEvent.TargetInstance.PartComponent
    arrNewFile = Split(strNewFile, "=")
    strFileName = arrNewFile(1)
    strFileName = Replace(strFileName, "\\", "\")
    strFileName = Replace(strFileName, Chr(34), "")
    objShell.Run("notepad.exe " & strFileName)
Loop

Le répertoire surveillé est "c:\test1", pour l'instant l'action déclenchée par l'arrivée du fichier est l'ouverture du dit fichier avec le notepad. Cela fonctionne, sauf que je n'arrive pas à déclencher l'action sur un nom particulier de fichier, pour l'instant tout fichier quelque soit son nom déclenche l'action.
Pouvez-vous m'indiquer comment déclencher l'action sur un nom de fichier en particulier (plus précisement le début du nom, je ne connais jamais la fin).

Par avance merci de votre aide
Blokator est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 23h16   #2
Membre confirmé
 
Avatar de zzzThibaut
 
Inscription : février 2007
Messages : 223
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : février 2007
Messages : 223
Points : 253
Points : 253
Bonjour
Il semble que tu récupères le nom du fichiers dans la variable strFileName. Si c'est bien le cas, un simple if avant d'executer la tache associée (ici ouverture de notepad) devrait suffir à vérifier le nom di fichier.
Vu la script que tu as écrit, je suis étonné que tu n'aies pas remarqué cela
zzzThibaut
zzzThibaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 11h12   #3
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 1
Points : 1
Bonjour zzzThibault

Tout d'abord merci pour ta réponse. Quant à ton étonnement, ne le soit plus, je n'ai pas écrit ce script j'ai fait quelques recherches et me suis dit à juste titre que celui-ci devrait m'approcher pas mal du but. Je n'ai malheureusement pas de compétenses en développement! Cela dit, pour avoir effectuer quelques recherches sur les sites spécialisés, j'y ai trouvé un grand intérèt et commence à m'autoformer. Paris ne s'est pas construit en un jour et il me faudra encore quelques heures de littérature avant de pouvoir être bombardé "développeur" même amateur. Etant pressé par le temps, c'est la raison pour laquelle j'ai posté ce sujet. Tu as raison, je récupère le nom du fichier dans la variable strFileName, il reste un petit souci que mon état d'avancement dans ma "formation" n'a pu me permettre de résoudre.
J'utilise IF mais ne parviens pas à n'évaluer que le début du nom de fichier (seule partie que je connaisse), je n'ai pas trouvé la syntaxe permettant d'utiliser les caractère génériques

If strFileName="nom_fichier_complet" Then action
l'action s'exécute si je précise le path complet du fichier, il faudrait une condition par fichier créé, ce qui n'est pas possible.

If strFileName="nom_fichier_partiel*.*" Then action
Pas d'erreur au lancement du programme, mais l'action ne s'exécute pas lorsqu'un fichier, dont le début du nom correspond à la valeur testée, arrive dans le répertoire.

Je suppose que je devrais utiliser une condition de type "content" à la place du signe "=" ?

Si quelqu'un est inspiré merci par avance.
Blokator est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 11h12   #4
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 1
Points : 1
Bonjour zzzThibault

Tout d'abord merci pour ta réponse. Quant à ton étonnement, ne le soit plus, je n'ai pas écrit ce script j'ai fait quelques recherches et me suis dit à juste titre que celui-ci devrait m'approcher pas mal du but. Je n'ai malheureusement pas de compétenses en développement! Cela dit, pour avoir effectuer quelques recherches sur les sites spécialisés, j'y ai trouvé un grand intérèt et commence à m'autoformer. Paris ne s'est pas construit en un jour et il me faudra encore quelques heures de littérature avant de pouvoir être bombardé "développeur" même amateur. Etant pressé par le temps, c'est la raison pour laquelle j'ai posté ce sujet. Tu as raison, je récupère le nom du fichier dans la variable strFileName, il reste un petit souci que mon état d'avancement dans ma "formation" n'a pu me permettre de résoudre.
J'utilise IF mais ne parviens pas à n'évaluer que le début du nom de fichier (seule partie que je connaisse), je n'ai pas trouvé la syntaxe permettant d'utiliser les caractère génériques

Code :
If strFileName="nom_fichier_complet" Then action
l'action s'exécute si je précise le path complet du fichier, il faudrait une condition par fichier créé, ce qui n'est pas possible.

Code :
If strFileName="nom_fichier_partiel*.*" Then action
Pas d'erreur au lancement du programme, mais l'action ne s'exécute pas lorsqu'un fichier, dont le début du nom correspond à la valeur testée, arrive dans le répertoire.

Je suppose que je devrais utiliser une condition de type "content" à la place du signe "=" ?

Si quelqu'un est inspiré merci par avance.
Blokator est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 11h34   #5
Membre confirmé
 
Avatar de zzzThibaut
 
Inscription : février 2007
Messages : 223
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : février 2007
Messages : 223
Points : 253
Points : 253
strFileName c'est le nom de ton fichier, la nom du Path ou le nom du path suivi par le nom du fichier ?
Fait des recherche sur la fonction substr qui t'indiquera si une chaine de caractère est inclue dans une autre. Je ne te donne pas la solution tout de suite car c'est en forgeant que l'on devient forgeron.
zzzThibaut
zzzThibaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 13h34   #6
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 1
Points : 1
Au vu des tests que j'ai effectués, strFileName correspond au path plus le nom complet du fichier.
Blokator est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 15h20   #7
Membre confirmé
 
Avatar de zzzThibaut
 
Inscription : février 2007
Messages : 223
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : février 2007
Messages : 223
Points : 253
Points : 253
Je me suis trompé c'est pas substr mais instr que tu dois utiliser comme fonction pour savoir si tu as un fichier qui commence avec une certaine chaine de caractère.
Voici un lien qui pourra t'aider
zzzThibaut
zzzThibaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 00h18   #8
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 1
Points : 1
Salut zzzThibault
Merci pour tes conseils, j'ai testé INSTR et ça fonctionne bien, je parviens à mettre une condition sur un caractère contenu dans le nom.

Voici la syntaxe que j'ai employée

variabl_caract_recherch = Instr(13,strFileName,"o",1)
if variabl_caract_recherch = 15 then objShell.Run("notepad.exe " & strFileName)
Blokator est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h13.


 
 
 
 
Partenaires

Hébergement Web