Détecter extension de fichier dans un répertoire.

[Résolu]
Signaler
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
-
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
-
Bonjour,

Je voudrais dévelloper un widjet pour windows, mais je bloque.
En fait je voudrais qu'un mécanisme envoi une boite à dialogue quand celui détecte un fichier pour extension **** dans le repertoire ou racine ****.

> Fichier *.exe détecté sur racine C > alerte (ex: vbcritical)
ou

> Fichier *.exe détecté dans C:\MonDossier > alert (ex: vbcritical).

NOTE: J'ai essayé avec le code suivant sans succès:

Sub norep
 Dim fso, msg 
  Set fso = CreateObject("Scripting.FileSystemObject" ) 
  If (fso.FileExists("C:\*.bat" )) Then 
    MsgBox "Un fichier bat détecté sur la racine du lecteur C !",vbExclamation + vbOkOnly + vbApplicationModal + 0,"GADGET:" 
  Else 
    msg = "RAS." 
  End If
End Sub 


Merçi d'avance.

7 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
normal, tu n'as pas assigné ton FSO...(faire un CreateObject Scripting.FileSystemObject, etc.)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
sur que le FileExists ne fonctionne pas...

c'est ecrit noir sur blanc dans la doc..

Wildcard characters (*, ?, and so on) are not supported.


voir propriété Files d'un objet Folder (obtenu via GetFolder)

te suffira alors pour chacun des fichiers énuméré de tester le nom, pour en connaitre l'extension.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
3
Re,

Le problème c'est que le widjet doit détecter si un ou des fichier(s) porte(nt) l'extension dans un dossier sans savoir le ou les nom(s) du ou des fichier(s).

Ex:

Il existe les fichiers suivants dans le dossier system32:
inetcpl.cpl
firewall.cpl
Mais le widjet ne connais pas les fichiers exitants (dû à une liste variante, système d'exploitation différents, ...).

En gros il faudrais traduire ce batch en VB:

if exist C:\Windows\system32\inetcpl.cpl goto alert
if exist C:\Windows\system32\firewall.cpl goto alert
if exist C:\Windows\system32\Settings.exe goto alert2
@exit
:alert
echo fichier CPL detecte dans le system32 !
if exist C:\Windows\system32\Settings.exe goto alert2
@exit
:alert2
echo fichier CPL detecte dans le system32 !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
je t'ai pourtant expliqué la marche à suivre...

itérer sur chaque entrée de la collection Files et tester le nom du fichier...

en gros, de tête :

For Each oFile in FSO.GetFolder("C:").Files
    If Right(oFile.Name, 4) = ".cpl" Then
     .... 
    End If
Next

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
3
OK, merçi: je vais tester.
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
3
J'ai testé comme suivant, mais il y a erreur:

Dim fso
Dim fso
For Each oFile in FSO.GetFolder("C:").Files
    If Right(oFile.Name, 4) = ".cpl" Then
    MsgBox "Un fichier cpl a detecte !",vbExclamation + vbOkOnly + vbApplicationModal + 0,"GADGET:" 
    End If
Next 
nrp()


...
Ligne: 2
Caract.: 1
Erreur: Objet requis: "
...
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
3
Merçi beaucoup !

Au moins je me coucherais moins bête !

Encore une fois merçi: je suis content ^c un gosse !