[Catégorie modifiée VB6 -> VBS] Compteur de Fichiers VBS

hereox - 27 sept. 2012 à 13:00
 hereox - 4 oct. 2012 à 09:40
Bonjour à tous !!

Alors voilà, j'ai fait un script qui me permet de compter les fichiers qui se trouve dans un répertoire (il fonctionne très bien).
Maintenant le problème est que j'aimerais aussi pourvoir compter les sous-répertoires et leurs fichiers au cas où il y en aurait dans le répertoire.

J'ai essayé de m'inspirer de code trouvé sur le net.
mais sans succès

Je sais qu'il faut que j'intègre à mon code une fonction récursive.

Merci d'avance pour vos futures réponses.

Cordialement
Héréox

Mon code:

Dim MyFolder
Dim Nombre
Dim objFso
Dim code_retour
code_retour = 0
 
MyFolder = WScript.Arguments.Named("f")
'WScript.echo MyFolder
 
Nombre = WScript.Arguments.Named("t")
'WScript.echo Nombre
 
Set objFso = CreateObject("Scripting.FileSystemObject")
 
'On vérifie l'existence du répertoire. Si celui-ci n'existe pas le script renvois une alerte critique.
If not objFso.FolderExists(MyFolder) Then
WScript.echo "Le répertoire n'existe pas"
Code_retour = 2
Else 
    ' Si le répertoire existe, le scripte vérifie si le nombre de fichier n'est pas dépassé.
' Et envoit une alerte critique si le nombre est dépassé.
        If objFso.GetFolder(MyFolder).Files.Count >= CInt(Nombre) Then
WScript.echo "Nombre de fichiers dépassé!!"
code_retour = 2
Else
 
WScript.echo "R.A.S"
code_retour = 0
End If
 
End If

29 réponses

ce que je voulais faire c'est compter le nombre tatal et si jamais il dépase 5 alors j'envoie un code retour de type critique( code_retoure = 2 )
Sinon un code retoure de type standard ( code_retoure = 0 )
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
2 oct. 2012 à 16:44
exemple
Option Explicit
Dim objFso
Dim MyFolder, MyCount, MyAddCount
MyFolder = "H:\Diapositives"
MyCount = 120
MyAddCount = 0

Set objFso = CreateObject("Scripting.FileSystemObject")

If objFso.FolderExists(MyFolder) Then
   Call SearchFolders(objFso.GetFolder(MyFolder), MyCount, MyAddCount)
Else 
   MsgBox MyFolder & " -> le repertoire n'existe pas" &vbCrLf&_
          "Fin du script",,ArgFolder
   WScript.Quit   
End If 

Set objFso = Nothing
'#######################################################################
Function SearchFolders(ArgFolder, MyCount, MyAddCount)
    Dim subFolder
    
    MyAddCount = MyAddCount + ArgFolder.Files.Count 
       
    If MyAddCount >= CInt(MyCount) Then
       MsgBox "Seuil de fichiers fixé à " & MyCount &vbCrLf&_
              "Nombre de fichiers > ou = au seuil car " &_
               ArgFolder.Files.Count & " fichiers" &vbCrLf&_
               "cumul fichiers : " & MyAddCount &vbCrLf&_
               "Fin du script",,ArgFolder
       WScript.Quit 
    Else
       MsgBox "Seuil de fichiers fixé à " & MyCount &vbCrLf&_
               "Nombre de fichiers < au seuil car " &_
               ArgFolder.Files.Count & " fichiers" &vbCrLf&_
               "cumul fichiers : " & MyAddCount,,ArgFolder
    End If 
    
    For Each subFolder In ArgFolder.SubFolders 
        Call SearchFolders(subFolder, MyCount, MyAddCount) 
    Next
End Function




jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
2 oct. 2012 à 16:54
 Tu n'as toujours pas dit :
- comment va s'exécuter ton script;
- comment veux-tu récupérer l' errorlevel.

Désolé, je m'absente quelques heures !!!


jean-marc
0
Bonjour à toi Jean-Marc !! :)

Mon script va s'éxecuter avec :
MyFolder = WScript.Arguments.Named("f")
WScript.echo MyFolder
Nombre = WScript.Arguments.Named("t")
WScript.echo Nombre

Via le CMD.

Le script remonte une alerte à Nagios.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2012 à 10:13
 Bonjour hereox,

Ton script se résume donc à
Option Explicit
Dim objFso
Dim MyFolder, MyCount, MyAddCount

MyAddCount = 0

MyFolder = WScript.Arguments.Named("f")
MyCount = WScript.Arguments.Named("t")

Set objFso = CreateObject("Scripting.FileSystemObject")

If objFso.FolderExists(MyFolder) Then
   Call SearchFolders(objFso.GetFolder(MyFolder), MyCount, MyAddCount)
Else 
   WScript.Quit(2)  
End If 

Set objFso = Nothing
'#######################################################################
Function SearchFolders(ArgFolder, MyCount, MyAddCount)
    Dim subFolder
    
    MyAddCount = MyAddCount + ArgFolder.Files.Count 
       
    If MyAddCount >= CInt(MyCount) Then WScript.Quit(2) 
    
    For Each subFolder In ArgFolder.SubFolders 
        Call SearchFolders(subFolder, MyCount, MyAddCount) 
    Next
End Function


jean-marc
0
Merci beaucoup Jean-Marc !! :)
J'ai fait quelque changement j'aimerais avoir ton avis.

Option Explicit
Dim objFso
Dim MyFolder, MyCount, NbFileAll
Dim code_retour
NbFileAll = 0
code_retour = 0

MyFolder = WScript.Arguments.Named("f")
WScript.echo MyFolder
MyCount = WScript.Arguments.Named("t")
WScript.echo MyCount

Set objFso = CreateObject("Scripting.FileSystemObject")

If objFso.FolderExists(MyFolder) Then
   Call SearchFolders(objFso.GetFolder(MyFolder), MyCount, NbFileAll)
Else 
WScript.echo "Le répertoire n'existe pas"
code_retour = 2  
End If 

Set objFso = Nothing

Function SearchFolders(ArgFolder, MyCount, NbFileAll)
    Dim subFolder
    
    NbFileAll = NbFileAll + ArgFolder.Files.Count 
       
    If NbFileAll >= CInt(MyCount) Then
'WScript.echo " Nombre de fichiers superieure à " & MyCount
code_retour = 2
else
'Wscript.echo " Nombre de fichiers inférieure à " & MyCount
code_retour = 0
    End if

    For Each subFolder In ArgFolder.SubFolders 
        Call SearchFolders(subFolder, MyCount, NbFileAll) 
    Next
End Function

Wscript.quit(code_retour)
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2012 à 11:21
 
Cette partie

    If NbFileAll >= CInt(MyCount) Then
'WScript.echo " Nombre de fichiers superieure à " & MyCount
code_retour = 2
else
'Wscript.echo " Nombre de fichiers inférieure à " & MyCount
code_retour = 0
    End if

peut être remplacée par
If NbFileAll >CInt(MyCount) Then code_retour 2


code_retour étant initialisée à 0 en début de script, il est inutile de recharger x fois à 0 ta variable.



jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2012 à 11:28
 Il serait plus judicieux de distinguer le code retour.
Si répertoire inexistant -> code retour 1
Si seuil fichier dépassé -> code retour 2
Cela te permettrait de charger ton message adéquat pour TNG.


jean-marc
0
Bonjour Jean-Marc !!! :)

J'ai bien pris en considération ce que tu ma suggéré je te fais un retour dans la journée.
Merci pour tous :)

Cordialement

Héréox
0
Rejoignez-nous