begin process at 2012 02 16 10:24:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Système

 > 

Fichier & Disque

 > 

Ditributeur de fichiers en réseau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ditributeur de fichiers en réseau

mercredi 30 janvier 2008 à 10:51:39 | Ditributeur de fichiers en réseau

neo2k2

Bonjour,

Je suis penché sur une application professionelle toute simple dont le but est de comparer les versions des programmes installés sur les pc cibles et installer la dernière version si ce n'est pas la bonne.

Le cahier des charges actuel est le suivant (en cours de modifications) :
   - se connecter à l'AD pour lister les pc du domaine (option que j'ai rajoutée car je savais le faire en VBS)
   - lister des fichiers (de type xls et mdb) dans des répertoires se trouvant sur le C des postes clients
   - lire les propriétés de ces fichiers en utilisant les DSO et afficher le numéro de version
   - comparer le numéro de version avec des fichiers de référence
   - installer sur les pc distants la dernière version
   - inscrire dans un log les pc qui ne sont pas à jour

Pour l'heure, j'ai essentiellement utilisé VBA et VBS car mes compétences en VB6 ou .NET ne sont pas suffisantes pour le faire. L'application est une macro Excel XP (qui tourne sous 2003-2007).

Pour lire les propriétés des fichiers, il faut télécharger et installer un add-on Microsoft qui s'appelle DSOFiles ( [ Lien ]), lequel donne des exemples en VB6 et VB7.

Voici le code qui liste les pc:

Dim args, oWinNT, oDomain
Dim Name
Set Shell = WScript.CreateObject("WScript.Shell")
domain="votre_domaine"
set oWinNT=GetObject("WinNT://" & domain)

Const ForReading = 1, ForWriting = 2
  Set WshShell = WScript.CreateObject("WScript.Shell")
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
'fichier de sortie contenant la liste des pc de l'AD
 objOutFile = "C:\scripts\ADListR.txt"
    Set f = fso.OpenTextFile(objOutFile, ForWriting,true)
 for each oDomain in oWinNT
  if  lcase(oDomain.class)="computer" then
   Name = oDomain.name
   if lcase(Mid(Name, 1,3))="lap" or lcase(Mid(Name, 1,3))="pos" then
    f.writeline(Name)
   end if
  end if
 next

'--------------------------------------------------------------------
' Sous programme de test du moteur
Sub TestHost
dim rep
SW_SHOWNORMAL=1
strFullName =lcase(WScript.FullName)
strappli=lcase(Wscript.ScriptFullName)
i=InStr(1,strFullName,".exe",1)
j=InStrRev(strFullName,"\",i,1)
strCommand=Mid(strFullName,j+1,i-j-1)
if strCommand<>"cscript" then
 rep=MsgBox("Ce script doit être lancé avec CSCRIPT" & VBCRLF & _
               "Cela peut être rendu permanent avec la commande" & VBCRLF & _
      "cscript //H:CScript //S /Nologo" & VBCRLF & _
      "Voulez-vous que ce soit fait automatiquement?", _
      vbYesNo + vbQuestion,strappli)
 if rep=vbYes  then
  nomcmd="setscript.bat"
  Set ficcmd = fso.CreateTextFile(nomcmd)
  ficcmd.writeline "@echo off"
  ficcmd.writeline "cscript //H:CScript //S /Nologo"
  ficcmd.writeline "pause"
  ficcmd.writeline chr(34) & strappli & chr(34)
  ficcmd.writeline "pause"
  ficcmd.close
  shell.Run nomcmd, SW_SHOWNORMAL,true
  end if
    WScript.Quit
 end if
end sub
'--------------------------------------------------------------------

Le code pour lister les fichiers sur les pc distants est le suivant :

On Error Resume Next

Set objExplorer = WScript.CreateObject _
    ("InternetExplorer.Application", "IE_")

' la liste des pc est un fichier html contenant une selectbox multiple
objExplorer.Navigate " [ Lien ]"  
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width = 440
objExplorer.Height = 320
objExplorer.Visible = 1            

Do While (objExplorer.Document.Body.All.OKClicked.Value = "")
    Wscript.Sleep 100                
Loop

strComputers = objExplorer.Document.Body.All.OKClicked.Value
objExplorer.Quit
Wscript.Sleep 100

If strComputers = "Cancelled" Then
    Wscript.Quit
End If

arrComputers = Split(strComputers, ",")
 
 For Each strComputer in arrComputers
 '
 'Enumération des fichiers sur disks NTFS
 '
 Dim objFso, objFld, objTxt, objOutFile, WshShell, objDrive, objDirectory, i
 Set objFso = Createobject("Scripting.FileSystemobject")
 Set objDirectory = Createobject("Scripting.FileSystemobject")
 Set WshShell = WScript.Createobject("WScript.Shell")

 strUser = wshShell.ExpandEnvironmentStrings("%USERNAME%")
'fichier de sortie
 objOutFile = "C:\scripts\FileListR3.txt"

 Set objTxt = objFso.OpenTextFile(objOutFile, 2, True)

 For Each objDrive in objFso.Drives
     If objDrive.IsReady = True And objDrive.DriveType = 2 Then
        Dim objDicoFiles
        Set objDicoFiles = Createobject("Scripting.Dictionary")
        '
        ' Programme principal
        'dossier à scanner
     objDirectory = "\\" & strComputer & "\C$\temp"
     If Not objFso.FolderExists(objDirectory) Then
      objTxt.WriteLine "Le répertoire \\" & strComputer & "\C$\temp n'existe pas."
     Else
         Call SearchFiles(objFso.GetFolder(objDirectory))
         Dim elements
         elements = objDicoFiles.Items
         'écriture dans le fichier txt      
         For i=0 To objDicoFiles.Count-1
            If Instr(elements(i), "mdb" ) = 1 Or Instr(elements(i), "xls" ) = 1 Then
                 objTxt.WriteLine elements(i) 'si l'élément est un fichier Access ou Excel on l'ajoute
              End if
         Next
     End If
     '
     End if
 Next
 objTxt.Close
 call ExportXLF(objOutFile)
 '
    Set objDicoFiles = Nothing
       Set objDirectory = Nothing
 '
 Set objTxt = Nothing
 Set objFso = Nothing
 Set WshShell = Nothing
 '
 'WScript.Echo "Script terminé"
 'Wscript.ScriptName
 'Wscript.ScriptFullName
 WScript.Echo "Programme " & Wscript.ScriptName & " terminé ...."
 '
 Return = WshShell.Run("notepad " & objOutFile, 1, True)
 '
 Next
    ' =====================================================================
    ' End
    ' =====================================================================

' fonction de recherche
Sub SearchFiles(objFolder)
    On Error Resume Next
    Dim objFile, subFolder
    For Each objFile In objFolder.Files
        Set objDicoFiles(objFile.Path) = objFile
    Next
    For Each subFolder In objFolder.SubFolders
        Call SearchFiles(subFolder)
    Next
End Sub

'Wscript.Quit
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Mon premier problème est que le scan me donne TOUTES les extensions de fichiers OU aucun si j'utilise Instr(). Je veux ne lister QUE les fichiers xls et mdb!

Merci de m'aider à corriger cette première étape.

Le problème suivant est que ma liste dans mon fichier html est statique alors que je voudrais qu'elle soit contruite dynamiquement sur la base de mon fichier texte ADListR.txt.

mercredi 30 janvier 2008 à 11:29:55 | Re : Ditributeur de fichiers en réseau

PCPT

Administrateur CodeS-SourceS
salut,

voici une première piste de recherche :
http://www.codyx.org/snippet_lister-tous-fichiers-repertoire_198.aspx#688

le dernier arguent optionel prendra une fois "*.xls", une autre "*.mdb"
à noter que cette fonction n'est pas récursive, tu en trouveras d'autres sur codyx.org

++

Prenez un instant pour répondre à ce sondage svp
mercredi 30 janvier 2008 à 13:12:49 | Re : Ditributeur de fichiers en réseau

neo2k2

Merci pour ton intervention seulement je reste sous VBS dans un premier temps, j'ai déjà fait l'application en VBA avec Excel seulement le temps d'exécution de la macro même récursive reste plus long.


Cette discussion est classée dans : set, end, fichiers, wscript, if


Répondre à ce message

Sujets en rapport avec ce message

Changer le compte expéditeur selon adresse du destinataire [ par trenard ] Bonjour,Débutant en VBA, je cherche un code qui pourrait changer le compte Expéditeur selon l'adresse destinataire pour outllook 2003 et 2007.Ex: si d Script VBS sur serveur windows 2003 [ par lolo9244 ] Bonjour,   Au boulot j'ai un script vbs sur un serveur windows 2003 serveur sur active directory.J'ai un probleme de compatibilté avec windows XP et 2 Recherche date affichage listbox [ par typhoon751 ] Bonjour à tous, j'ai un code qui me permet d'effectuer des recherches et d'afficher dans une listbox les résultats retournés. Ce code marche très bie Exporter vers excel l'arborescence outlook (macro vba) [ par ouassou81 ] Bonjour, je travaille depuis un moment sur divers projets VBA (en visual basic 6 ou en macro excel ou directement depuisle VBA d'outlook). j'ai un pr aide pour script sur droits sur répertoire [ par fire90 ] Bonjour j'ai créer un script qui crée des utilisateurs en utilisant un fichier excel. Il crée les uo et sous uo et place les utilisateurs dans les gro Accélérer le traitement de comparaison de 2 feuilles [ par Soft77 ] Bonjour, J'utilise le code de Galopin pour comparer 2 feuilles Excel. Le problème étant que chaque feuille peut atteindre 350 000 lignes et donc la m Background worker sur form differente. [ par Sentynel ] Bonjour à tous, J'ai un soucis avec mon background worker. J'ai ma form principal (mainform) qui contien une listbox avec des items. Lorsque l'on cli [Catégorie modifiée VB6 -> VBA] Problème évènement déclencheur macro [ par jeremla ] Bonjour, Je cherche une solution avec ma macro pour que celle-ci se lance automatiquement à chaque changement d'état de ma colonne B ou A. J'ai essa Lire des données xml avec visual basic 2010 [ par maxkun ] Bonjour, voila, j'aimerai lire des données XML en vb, mais je débute et je ne vois pas comment faire, quelqu'un pourrait m'aider??? En gros j'ai le c Progress bar et avancement pour plusieurs dowloads [ par oxygene2 ] Salut à tous ! Avant tout chose je vais essayer d'expliquer clairement ce que je compte faire [^^happy17] Système de maj à double emploi : mettre à j


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,867 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales