Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3190 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  FileExists > rechercher la présence de fichier dans un répertoire.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

FileExists > rechercher la présence de fichier dans un répertoire.

n°1173117
ikao2
okaïdi okaïda
Posté le 09-08-2005 à 12:57:39  profilanswer
 

Bonjour !
 
Je suis tout nouveau en VB script. Je ne suis pas en train d'apprendre ce langage, mais je l'utilise pour faire certaines actions dans un installeur. (package *.msi).
 
Certains cas de mon installation sont conditionnés par la présence de fichiers (dont je ne connais pas forcement le nom) dans un certain dossier (dont je connais le chemin).
Ce que je cherche à faire, c'est tout simplement d'aller dans ce dossier et regarder si il y a quelque chose dedans (un fichier quelconque).
 
J'ai donc écrit le bout de programme suivant :
 

Code :
  1. Set  fso = CreateObject("Scripting.FileSystemObject" )
  2. If (fso.FileExists("c:\PROG2\yop.txt" )) Then
  3.   msgbox "oui"
  4. Else
  5.   msgbox "non"
  6. End If


 
Et c'est cool, ca marche, il detecte bien le fichier quand il est là.
 
Bon, ensuite, j'ai tenté (en croisant trés fort les doigts) un :
 

Code :
  1. Set  fso = CreateObject("Scripting.FileSystemObject" )
  2. If (fso.FileExists("c:\PROG2\*.*" )) Then <<<<< ca a changé là.
  3.   msgbox "oui"
  4. Else
  5.   msgbox "non"
  6. End If


 
 
Mais apparemment, c'était trop facile. J'ai donc cherché un peu à gauche et à droite, mais sans trouver d'info. Donc si vous avez une piste, un site ou carrement la réponse sous la main, je suis preneur :-) !
 
merci !  :hello:

mood
Publicité
Posté le 09-08-2005 à 12:57:39  profilanswer
 

n°1173166
Swim
Posté le 09-08-2005 à 13:46:13  profilanswer
 

Essaye avec la fonction Dir:
 

Code :
  1. String monfichier
  2. monfichier=Dir("c:\PROG2\*.*" )
  3. If monfichier <> "" Then
  4.    msgbox "oui"
  5. Else
  6.    msgbox "non"
  7. End If


Message édité par Swim le 09-08-2005 à 13:50:30
n°1173218
ikao2
okaïdi okaïda
Posté le 09-08-2005 à 14:21:20  profilanswer
 

Ca ne fonctionne pas, et sur le net, je trouve pas mal de monde qui voulait utiliser cette fonction et à qui on conseille d'utiliser l'objet "FileSystemObject", mais sans pour autant donner une solution :-)
 
Mais je viens de penser à un truc, au lieu de chercher si un fichier est présent, on peut regarder si le dossier est vide (ok, ca paraît bète dit comme ca, mais l'un fait appel à des fonctions de fichiers, et l'autre à des fonctions de dossier).
 
Si vous avez un truc du genre "isEmpty", ca serait cool :-) Je croyais avoir vu ca au cours de mes pérégrinations , mais impossible de remettre la main dessus (si effectivement ca existe).
 
Une autre idée ou une astuce pour faire fonctionner Dir ?

n°1173296
ikao2
okaïdi okaïda
Posté le 09-08-2005 à 15:19:44  profilanswer
 

J'ai réussi à écrire un bout de code qui me permet d'avoir ce que je veux, mais ca n'est pas trés "propre", donc si vous avez mieux :
 

Code :
  1. set fso = CreateObject("Scripting.FileSystemObject" )
  2. rep = "c:\PROG1"
  3. dim f, ff
  4. set f =  fso.GetFolder(rep).Files
  5. For Each ff In f
  6.    lit_fic = lit_fic & ff.Path & " - "
  7. Next
  8. if (lit_fic="" ) then
  9.    msgbox "Il n'y a pas de fichiers dans le dossier " & rep
  10. else
  11.     msgbox "Il y a bien au moins un fichier dans le dossier " & rep & " et en voici la liste : " & lit_fic
  12. end if


 
 
Mais comme vous le voyez, on énumère tous les fichiers, or moins je voudrais juste vérifier si le dossier est vide ou pas :-/

n°1173309
mareek
Et de 3 \o/
Posté le 09-08-2005 à 15:36:57  profilanswer
 

Dir ne fonctionne pas en VBS, tu dois tout faire avec le FSO.
 
Pour faire ce que tu veux il faut récupérer l'objet folder de ton dossier et de regarder s'il y a de fichiers dedans comme ça:
 

Code :
  1. set oFolder=oFSO.GetFolder("c:\PROG2" )
  2. if oFolder.files.count>0 then
  3.   msgbox "oui"
  4. Else
  5.   msgbox "non"
  6. End If


Pour plus d'infos, la doc du FSO:
http://msdn.microsoft.com/library/default.asp


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1173318
c_moa
Posté le 09-08-2005 à 15:44:07  profilanswer
 


fso effectivement
 
 
 

Code :
  1. Wscript.Echo "Nombre de fichiers dans c:\ " & Nombre_fichiers("c:\" )
  2. Function Nombre_fichiers(dossier)
  3.    Dim fso, f, f1, fc, s , nb_fichiers
  4.    Set fso = CreateObject("Scripting.FileSystemObject" )
  5.    Set f = fso.GetFolder(dossier)
  6.    Set fc = f.Files
  7.    nb_fichiers=0
  8.    For Each f1 in fc
  9.         nb_fichiers = nb_fichiers + 1
  10.    Next
  11.    Nombre_fichiers = nb_fichiers
  12. End Function

n°1173343
mareek
Et de 3 \o/
Posté le 09-08-2005 à 16:03:42  profilanswer
 

c_moa a écrit :

fso effectivement
 
 
 

Code :
  1. Wscript.Echo "Nombre de fichiers dans c:\ " & Nombre_fichiers("c:\" )
  2. Function Nombre_fichiers(dossier)
  3.    Dim fso, f, f1, fc, s , nb_fichiers
  4.    Set fso = CreateObject("Scripting.FileSystemObject" )
  5.    Set f = fso.GetFolder(dossier)
  6.    Set fc = f.Files
  7.    nb_fichiers=0
  8.    For Each f1 in fc
  9.         nb_fichiers = nb_fichiers + 1
  10.    Next
  11.    Nombre_fichiers = nb_fichiers
  12. End Function



 
il y a plus simple ;) :

Code :
  1. Wscript.Echo "Nombre de fichiers dans c:\ " & Nombre_fichiers("c:\" )
  2. Function Nombre_fichiers(dossier)
  3.    Dim fso, f
  4.    Set fso = CreateObject("Scripting.FileSystemObject" )
  5.    Set f = fso.GetFolder(dossier)
  6.    Nombre_fichiers = f.Files.count
  7. End Function



---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1173506
ikao2
okaïdi okaïda
Posté le 09-08-2005 à 18:00:23  profilanswer
 

Ok, merci beaucoup, je vais voir ca !

n°1173556
c_moa
Posté le 09-08-2005 à 19:19:24  profilanswer
 

Merci mareek,
Ma fonction avait été codée dans l'urgence.
Je n'avais pas vu le count dans le ( la ) msdn.
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  FileExists > rechercher la présence de fichier dans un répertoire.

 

Sujets relatifs
fichier dans .jarEcrire dans un fichier sur un client
URL fichier distantimprimer un fichier distant
un code a modifier... listage fichier[php] Ecrire dans un fichier lancer par un header !
Impossible d'ouvrir un fichier s'il est inclus dans une archive .jarvirer/reduire le fichier idbdata1 (MySQL)
Lecture d'hexa dans un fichierTest de présence de paramètre de type '&1' en SQL
Plus de sujets relatifs à : FileExists > rechercher la présence de fichier dans un répertoire.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR