Aide vbscript

cs_tomyboy Messages postés 21 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 13 novembre 2007 - 30 oct. 2007 à 10:48
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 13 nov. 2007 à 21:53
Salut à vous,


Je supra débute en vbs et je dois faire un script qui permet de checker l'ensemble des disque dur d'une machine pour recuperer un fichier, tout en étant fonctionnel sur n'importe quel type de machine ( os différent, serveur/pc...) il me semble qu'il faut mettre une variable d'environnement , mais je ne sais pas trop, merci de votre aide

44 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
13 nov. 2007 à 18:22
 Bonsoir à tous,

Si ton OS supporte WMI:

Option Explicit
Const cFile = "JeRechercheCeFichier"
Const cExt = "txt"

MsgBox SearchFile(cFile,cExt),,"Result fonction SearchFile"

Function SearchFile(MonFichier,MonExtension)
Dim strComputer, objWMIService, colFiles, objFile
strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where FileName='" & MonFichier & _
                                 "' And Extension ='" &  MonExtension & "'")

For Each objFile in colFiles
    SearchFile = objFile.Path &vbCrLf& objFile.Name
    Set objWMIService = Nothing
    Set colFiles =  Nothing
    Exit Function
Next
Set objWMIService = Nothing
Set colFiles =  Nothing
SearchFile = "Fichier non trouvé"
End Function

Dans CIM_DateFile, on peut préciser le DriveType ainsi que le Drive(Name).
Si on veut rechercher, sur tous les disks, les fichiers se nommant MonFichier,
on procéderait ainsi:
For Each objFile in colFiles
    resultat = resultat &vbCr& objFile.Path &vbCrLf& objFile.Name &vbcrlf
Next
msgbox resultat

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
13 nov. 2007 à 19:01
Re,

Pour ne sélectionner que les disks durs, on utilisera 2 Select.
Ex:
Const HARD_DISK = 3
'0 = Unknown
'1 = No Root Directory
'2 = Removable Disk
'3 = Local Disk
'4 = Network Drive
'5 = Compact Disc
'6 = RAM Disk

Set objWMIService = GetObject("winmgmts:" _
                    & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery _
           ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
       
For Each objDisk in colDisks
        Set colFiles = objWMIService.ExecQuery _
                       ("Select * from CIM_DataFile where Drive = '" &_
                         objDisk.Name & "' And Extension = '" & objTabExt(i) &"'")
        For Each objFile in colFiles
            msgbox objFile.Name &vbcrlf& objFile.Path

jean-marc
0
cs_tomyboy Messages postés 21 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 13 novembre 2007
13 nov. 2007 à 20:55
Merci Jean-marc

il ne me reste plus qu'a checker la langue de l'os et je pense que ça sera fini

merci beaucoup
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
13 nov. 2007 à 21:53
Re,

Pour info, avec wmi, objBIOS.CurrentLanguage de la classe Win32_BIOS ne renvoie pas la langue si désintall/réinstall OS (testé sur plusieurs servers).

jean-marc
0
Rejoignez-nous