| VBscript et Base de donnée Access par lameche007 |
mardi 14 juin 2005 à 11:30:16 |
Salut,
Voici un exemple pour te connecter sur access. Ceci est un script fonctionnel non raffiné. ' COMMENT: <Compiler dans un fichier ACCESS toutes les informations ' des fichiers d'un lecteur '========================================================================================================= ' 'Accèss au dossier d'un disque Const adOpenStatic = 3 Const adLockOptimistic = 3 Const adUseClient = 3 Const MoteurDeRecherche = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" ' ' Déclaration des variables de la base de données ACCESS ' Dim oFS Dim objConnection Dim objRecordset Dim AccesFichier Dim NumCD Dim NomCD Dim NomLog Dim NomApp '(37) Debut du programme ' On Error Resume Next Flag = False msgTexte = "Entrez le numéro du CDROM à lire : " & vbCrLf & "( ex.: CD1001 )" NumCD = InputBox(msgTexte, "Saisie du numéro du CDROM à lire", "CDR10010") msgTexte = "Entrez le nom du CDROM à lire : " & vbCrLf & "( ex.: WINDOWS XP PRO )" NomCD = InputBox(msgTexte, "Saisie du nom du CDROM à lire", "SOURCES #1") msgTexte = "Entrez le nom du logiciel : " & vbCrLf & "( ex.: Microsoft Word )" NomLog = InputBox(msgTexte, "Saisie du fichier à créer", "DOCUMENTS") msgTexte = "Entrez le nom de l'application : " & vbCrLf & "(ex.: Microsoft Word)" NomApp = InputBox(msgTexte, "Saisie du fichier à créer", "DONNÉES") msgTexte = "Entrez le nom du fichier : " & vbCrLf & "(ex.: C:\CDROM.MDB)" Fichier = InputBox(msgTexte, "Saisie du fichier à créer", "K:\CDROM.MDB") Set objConnection = CreateObject("ADODB.Connection") Set objRecordset = CreateObject("ADODB.Recordset") Set oFS = CreateObject("Scripting.FileSystemObject") Disque = Mid(Fichier, 1, 2) Set oLecteur = oFS.GetDrive(Disque) If (oLecteur.IsReady) Then AccesFichier = MoteurDeRecherche & Fichier objConnection.Open AccesFichier objRecordset.Open "SELECT * FROM LibrairieCDROM" , objConnection, adOpenStatic, adLockOptimistic Lecteur = InputBox("Entrez la lettre du lecteur à lire :", "Saisie du lecteur à lire","H") Set oLecteur = oFS.GetDrive(Lecteur) If (oLecteur.IsReady) Then Call Principal(Fichier) Else EnvoiMessage (0) End If Else EnvoiMessage (0) End If ' '========================================================================================================= '85 Sub Principal(ByVal nomFichier) ' On Error Resume Next If (oLecteur.IsReady) Then 'Lecture des fichiers dans la racine du lecteur If (oLecteur.RootFolder.Files.Count > 0) Then For Each oFichier In oLecteur.RootFolder.Files objRecordset.AddNew objRecordset("Nom Fichier") = oFichier.Name ' objRecordset("Type Fichier") = oFichier.Type objRecordset("Grandeur") = oFichier.Size objRecordset("Chemin d'accès") = oFichier.Path objRecordset("Date Créé") = oFichier.DateCreated ' objRecordset("Date Accédé") = oFichier.DateLastAccessed objRecordset("Date Modifié") = oFichier.DateLastModified objRecordset("Nom court") = oFichier.ShortName objRecordset("Chemin court") = oFichier.ShortPath Call ChercheAttributs (oFichier,CACHE,Reponse) objRecordset("Attr CACHÉ") = Reponse Call ChercheAttributs (oFichier,SYSTEME,Reponse) objRecordset("Attr SYSTÈME") = Reponse Call ChercheAttributs (oFichier,ARCHIVE,Reponse) objRecordset("Attr ARCHIVE") = Reponse Call ChercheAttributs (oFichier,LECTURE,Reponse) objRecordset("Attr LECTURE SEULE") = Reponse Call ChercheAttributs (oFichier,RACCOURCI,Reponse) objRecordset("Attr RACCOURCI") = Reponse Call ChercheAttributs (oFichier,COMPRESSE,Reponse) objRecordset("Attr COMPRESSÉ") = Reponse objRecordset("Numéro CDROM") = NumCD objRecordset("Nom CDROM") = NomCD objRecordset("Nom Logiciel") = NomLog objRecordset("Nom Application") = NomApp objRecordset.Update Next End If 'Lecture des sous-répertoires dans le lecteur For Each oRepertoire In oLecteur.RootFolder.SubFolders Call ListeFichier(oRepertoire) Next End If ' objRecordset.Close objConnection.Close WScript.Echo "Fin de traitement :-) " End Sub '179 '========================================================================== ' Sub ListeFichier(ByVal oRepertoire) Dim oDossier Dim Reponse ' On Error Resume Next If (oRepertoire.Files.Count > 0) Then For Each oFichier In oRepertoire.Files objRecordset.AddNew objRecordset("Nom Fichier") = oFichier.Name ' objRecordset("Type Fichier") = oFichier.Type objRecordset("Grandeur") = oFichier.Size objRecordset("Chemin d'accès") = oFichier.Path objRecordset("Date Créé") = oFichier.DateCreated ' objRecordset("Date Accédé") = oFichier.DateLastAccessed objRecordset("Date Modifié") = oFichier.DateLastModified objRecordset("Nom court") = oFichier.ShortName objRecordset("Chemin court") = oFichier.ShortPath Call ChercheAttributs (oFichier,CACHE,Reponse) objRecordset("Attr CACHÉ") = Reponse Call ChercheAttributs (oFichier,SYSTEME,Reponse) objRecordset("Attr SYSTÈME") = Reponse Call ChercheAttributs (oFichier,ARCHIVE,Reponse) objRecordset("Attr ARCHIVE") = Reponse Call ChercheAttributs (oFichier,LECTURE,Reponse) objRecordset("Attr LECTURE SEULE") = Reponse Call ChercheAttributs (oFichier,RACCOURCI,Reponse) objRecordset("Attr RACCOURCI") = Reponse Call ChercheAttributs (oFichier,COMPRESSE,Reponse) objRecordset("Attr COMPRESSÉ") = Reponse objRecordset("Numéro CDROM") = NumCD objRecordset("Nom CDROM") = NomCD objRecordset("Nom Logiciel") = NomLog objRecordset("Nom Application") = NomApp objRecordset.Update Next End If If (oRepertoire.SubFolders.Count > 0) Then For Each oDossier In oRepertoire.SubFolders Call ListeFichier(oDossier) Next End If End Sub ' '========================================================================== ' Function ChercheAttributs (ByVal oFichier,ByVal Validation, ByRef Reponse) ' On Error Resume Next Reponse = "Aucun" Select Case (Validation) Case (LECTURE) If (oFichier.Attributes AND 1) Then Reponse = "Activer" 'Read-only = VRAI Else Reponse = "Désactiver" 'Read-only = FAUX End If Case (CACHE) If (oFichier.Attributes AND 2) Then Reponse = "Activer" 'Hidden file = VRAI Else Reponse = "Désactiver" 'Hidden file = FAUX End If Case (SYSTEME) If (oFichier.Attributes AND 4) Then Reponse = "Activer" 'System file = VRAI Else Reponse = "Désactiver" 'System file = FAUX End If Case (ARCHIVE) If (oFichier.Attributes AND 32) Then Reponse = "Activer" 'Archive bit = VRAI Else Reponse = "Désactiver" 'Archive bit = FAUX End If Case (RACCOURCI) If (oFichier.Attributes AND 64) Then Reponse = "Activer" 'ShortCut = VRAI Else Reponse = "Désactiver" 'ShortCut = FAUX End If Case (COMPRESSE) If (oFichier.Attributes AND 2048) Then Reponse = "Activer" 'Compressed file = VRAI Else Reponse = "Désactiver" 'Compressed file = FAUX End If Case Else Reponse = "Aucun" End Select End Function ' '========================================================================== ' Lupin ~L'essentiel est invisible pour les yeux~ ~On ne voit bien qu'avec le coeur~
|
Salut,
Bon, j'ai toujours du mal a laisser trainer une adresse courriel dans un forum, j'ai du par le passer détruire une adresse pour cause de spam. Enfin, tu peux m'écrire ici à pierre_charpentier2000 arobas yahoo point ca. @+ ~L'essentiel est invisible pour les yeux~ ~On ne voit bien qu'avec le coeur~
|
EN faites voici Mon scrupt Qui me permet de recuperer l espace restant de mes disque ! et jeveux que a chaque lancement de se script ca ma stock les données concernant les disque dans une base de donnée type ACESS.Alors est ce que qu un peu me dire comment envoyer ses données a ma base Merci d avnce a toutes et a tous!!!
'---------------------------------------------------------- ' Script de description des Hdd dans une page web ' ---------------------------------------------------------- Dim cnt dim Aff() dim Aff0() dim Aff1() dim Aff2() dim Aff3() cnt = 0 Redim Aff(cnt) Redim Aff0(cnt) Redim Aff1(cnt) Redim Aff2(cnt) Redim Aff3(cnt) Select Case WScript.Arguments.Count Case 0 ' Default if none specified is local computer (".") Set objWMIService = GetObject( "winmgmts://./root/cimv2" ) Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 ) For Each objItem in colItems strComputer = objItem.Name Next Case 1 ' Command line parameter can either be a computer name ' or "/?" to request online help strComputer = Wscript.Arguments(0) if InStr( strComputer, "?" ) > 0 Then Syntax Case Else ' Maximum is 1 command line parameter Syntax End Select Display( strComputer ) Function Display( strComputer ) On Error Resume Next Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" ) If Err.Number Then WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _ " " & Err.Description Err.Clear Syntax End If On Error GoTo 0 ' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48) Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48) For Each objItem in colItems Aff(cnt) = strComputer Aff0(cnt) = objItem.Name & vbTab Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) ) Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) ) Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _ vbCrLf cnt = cnt + 1 Redim Preserve Aff(cnt) Redim Preserve Aff0(cnt) Redim Preserve Aff1(cnt) Redim Preserve Aff2(cnt) Redim Preserve Aff3(cnt) Next End Function ' ---------------------------------------------------------- Dim fso Set fso = WScript.CreateObject("Scripting.FileSystemObject") DestHtml = "hd.html" CreateHTML DestHTML Sub CreateHTML(filename) dim ts set ts=fso.CreateTextFile(filename,true) ts.writeline "<HTML>" ts.WriteLine "<BODY>" ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>" ts.writeline "<table border=1 cellspacing=1 width=100%>" ts.writeline "<tr>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Name</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Drive</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Size</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Free</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>% Free</b></td>" ts.writeline "</tr>" ts.writeline "<tr>" for i = 0 to cnt ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>" ts.writeline "</tr>" next ts.writeline "</table>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<b><font size=2>Fait le 14 juin 2005 par Mohax qui pète un plomb lol</font></b>" ts.WriteLine "</CENTER></BODY>" ts.WriteLine "</HTML>" ts.close End Sub |
Bonjour,
Voilà, j'ai tenté de comprendre un peu ton code et j'ai adapté, toutefois le compilateur me plante sur des lignes de ta partie, alors je n'ai pu valider la partie que j'ai rajouté ...
'----------------------------------------------------------
' Script de description des Hdd dans une page web
' ----------------------------------------------------------
'
'*************************************************************************
'Constante d'accèss au fichier *.mdb
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Const MoteurDeRecherche = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
'
' Déclaration des variables de la base de données ACCESS
'
Dim oFS, Disque, Fichier, AccesFichier
Dim objConnection
Dim objRecordset
Dim AccesFichier
'*************************************************************************
'********-----------------------------------------------------************
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
DestHtml = "hd.html"
'********-----------------------------------------------------************
Dim cnt
dim Aff()
dim Aff0()
dim Aff1()
dim Aff2()
dim Aff3()
cnt = 0
Redim Aff(cnt)
Redim Aff0(cnt)
Redim Aff1(cnt)
Redim Aff2(cnt)
Redim Aff3(cnt)
Select Case WScript.Arguments.Count
Case 0
' Default if none specified is local computer (".")
Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
strComputer = objItem.Name
Next
Case 1
' Command line parameter can either be a computer name
' or "/?" to request online help
strComputer = Wscript.Arguments(0)
if InStr( strComputer, "?" ) > 0 Then Syntax
Case Else
' Maximum is 1 command line parameter
Syntax
End Select
Display (strComputer)
CreateHTML (DestHTML )
CreateBDAccess()
Function Display( strComputer )
On Error Resume Next
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
If Err.Number Then
WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _
" " & Err.Description
Err.Clear
Syntax
End If
On Error GoTo 0
' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48)
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
For Each objItem in colItems
Aff(cnt) = strComputer
Aff0(cnt) = objItem.Name & vbTab
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )
Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _
vbCrLf
cnt = cnt + 1
Redim Preserve Aff(cnt)
ReDim Preserve Aff0(cnt)
Redim Preserve Aff1(cnt)
Redim Preserve Aff2(cnt)
Redim Preserve Aff3(cnt)
Next
End Function
' ----------------------------------------------------------
Function CreateHTML(filename)
dim ts
set ts=fso.CreateTextFile(filename,true)
ts.writeline "<HTML>"
ts.WriteLine "<BODY>"
ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>"
ts.writeline "<table border=1 cellspacing=1 width=100%>"
ts.writeline "<tr>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Name</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Drive</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Size</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Free</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>% Free</b></td>"
ts.writeline "</tr>"
ts.writeline "<tr>"
for i = 0 to cnt
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>"
ts.writeline "</tr>"
next
ts.writeline "</table>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<b><font size=2>Fait le 14 juin 2005 par Mohax qui pète un plomb lol</font></b>"
ts.WriteLine "</CENTER></BODY>"
ts.WriteLine "</HTML>"
ts.close
End Function
Function CreateBDAccess()
'Nom du fichier MSAccess
Fichier = InputBox(msgTexte, "Saisie du fichier à créer", "C:\MaBase.MDB")
'Établie un objet ADO pour déplacement dans objet
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
'Créer un objet fichier pour atteindre le fichier mdb
Set oFS = CreateObject("Scripting.FileSystemObject")
'Lecteur courant ?
Disque = Mid(Fichier, 1, 2)
'Capture du lecteur
Set oLecteur = oFS.GetDrive(Disque)
'Lecteur prêt ?
If (oLecteur.IsReady) Then
'Accroche le fichier sur le moteur de recherche
AccesFichier = MoteurDeRecherche & Fichier
'Ouverture du fichier access
objConnection.Open AccesFichier
'Création d'un ensemble "recordset" sur les données souhaité
objRecordset.Open "SELECT * FROM MaTable" , objConnection, adOpenStatic, adLockOptimistic
End If
For i = 0 to cnt
objRecordset.AddNew
objRecordset("Champs1") = Aff(i)
objRecordset("Champs2") = Aff0(i)
objRecordset("Champs3") = Aff1(i)
objRecordset("Champs4") = Aff2(i)
objRecordset("Champs5") = Aff3(i)
objRecordset.Update
Next
End Function
Lupin ~L'essentiel est invisible pour les yeux~ ~On ne voit bien qu'avec le coeur~ |
re:
le compilateur me plante sur les lignes ou l'instruction CStr est localisé, je soupçonne un problème de typage : Message : Utilisation non autorisée de Null: 'CStr' mais pour le reste ça va, ton fichier mdb doit être créer avec le bon nom de table et les bons noms de champs. ~L'essentiel est invisible pour les yeux~ ~On ne voit bien qu'avec le coeur~ |
Salut Mister Lupin et encore merci pour pour ton aide et desolé pour le derrangement occasioné!
Donc en faite je vois que en Vbscript tu va aussi Shumarer Moi j en suis encore au Karting comme tu as pu le voir looool!!! En je voulais savoir si tu avais tester Mon code sans le modifier tu t es apercu qu il marchait rassure moi loool !!! En faite Moi j ai crée une base de donnée Appelée BdDisque.mdb et dans cette base de donnée j ai crée une table que j ai nomé EspaceDisque et qui contient les champs suivants: Nom Drive Size Free Pourcentage Date Comme tu as pu l appercevoir cela correspond en faite aux données recuperées par mon script !! Ma base de Donnée se trouve dans mon disque F:\ Alors dis moi si ce que j ai fais est correcte deja dans un premier temps pour que je ne continu pas dans la n importe quoi lol Moi quand je compile le script avec tes modifs j ai une erreur au niveau de la ligne 19 colonne 5 mais bon avec VBs Factory il te signale des erreurs a un endroit mais la faute est soit 10 ligne en dessous ou au dessus donc le compilateur n est pas de très bonne qualité c est ca qui me pose problem dans mon apprentissage de VBscript: |
je me suis appercu que dans ton script tu a defini 2 fois la variable suivante :
Dim oFS, Disque, Fichier, AccesFichier Dim AccesFichier tu vois que AccesFichier est defini deux fois et moi mon compilateur ma signal une erreur a se niveau !!! Qu en pense Tu ? le problem peut venir de la je pense !!! |
Voila MIster Lupin en faisant un copier coller du code ci dessous ya de l avancement mais j ai encore bloqué alors si tu peux debloquer la situation se serai cool merci
'---------------------------------------------------------- ' Script de description des Hdd dans une page web ' ---------------------------------------------------------- ' '************************************************************************* 'Constante d'accèss au fichier *.mdb Const adOpenStatic = 3 Const adLockOptimistic = 3 Const adUseClient = 3 Const MoteurDeRecherche = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" ' ' Déclaration des variables de la base de données ACCESS ' Dim oFS, Disque, Fichier, AccesFichier Dim objConnection Dim objRecordset 'Dim AccesFichier '************************************************************************* '********-----------------------------------------------------************ Dim fso Set fso = WScript.CreateObject("Scripting.FileSystemObject") DestHtml = "hd.html" '********-----------------------------------------------------************ Dim cnt dim Aff() dim Aff0() dim Aff1() dim Aff2() dim Aff3() cnt = 0 Redim Aff(cnt) Redim Aff0(cnt) Redim Aff1(cnt) Redim Aff2(cnt) Redim Aff3(cnt) Select Case WScript.Arguments.Count Case 0 ' Default if none specified is local computer (".") Set objWMIService = GetObject( "winmgmts://./root/cimv2" ) Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 ) For Each objItem in colItems strComputer = objItem.Name Next Case 1 ' Command line parameter can either be a computer name ' or "/?" to request online help strComputer = Wscript.Arguments(0) if InStr( strComputer, "?" ) > 0 Then Syntax Case Else ' Maximum is 1 command line parameter Syntax End Select Display (strComputer) CreateHTML (DestHTML ) CreateBDAccess() Function Display( strComputer ) On Error Resume Next Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" ) If Err.Number Then WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _ " " & Err.Description Err.Clear Syntax End If On Error GoTo 0 ' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48) Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48) For Each objItem in colItems Aff(cnt) = strComputer Aff0(cnt) = objItem.Name & vbTab Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) ) Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) ) Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _ vbCrLf cnt = cnt + 1 Redim Preserve Aff(cnt) ReDim Preserve Aff0(cnt) Redim Preserve Aff1(cnt) Redim Preserve Aff2(cnt) Redim Preserve Aff3(cnt) Next End Function ' ---------------------------------------------------------- Function CreateHTML(filename) dim ts set ts=fso.CreateTextFile(filename,true) ts.writeline "<HTML>" ts.WriteLine "<BODY>" ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>" ts.writeline "<table border=1 cellspacing=1 width=100%>" ts.writeline "<tr>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Name</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Drive</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Size</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Free</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>% Free</b></td>" ts.writeline "</tr>" ts.writeline "<tr>" for i = 0 to cnt ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>" ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>" ts.writeline "</tr>" next ts.writeline "</table>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<p> </p>" ts.writeline "<b><font size=2>Fait le 14 juin 2005 par Mohax qui pète un plomb lol</font></b>" ts.WriteLine "</CENTER></BODY>" ts.WriteLine "</HTML>" ts.close End Function Function CreateBDAccess() 'Nom du fichier MSAccess Fichier = InputBox(msgTexte, "Saisie du fichier à créer", "F:\BdDisque.MDB") 'Établie un objet ADO pour déplacement dans objet Set objConnection = CreateObject("ADODB.Connection") Set objRecordset = CreateObject("ADODB.Recordset") 'Créer un objet fichier pour atteindre le fichier mdb Set oFS = CreateObject("Scripting.FileSystemObject") 'Lecteur courant ? Disque = Mid(Fichier, 1, 2) 'Capture du lecteur Set oLecteur = oFS.GetDrive(Disque) 'Lecteur prêt ? If (oLecteur.IsReady) Then 'Accroche le fichier sur le moteur de recherche AccesFichier = MoteurDeRecherche & Fichier 'Ouverture du fichier access objConnection.Open AccesFichier 'Création d'un ensemble "recordset" sur les données souhaité objRecordset.Open "SELECT * FROM EspaceDisque" , objConnection, adOpenStatic, adLockOptimistic End If For i = 0 to cnt objRecordset.AddNew objRecordset("Champs1") = Aff(i) objRecordset("Champs2") = Aff0(i) objRecordset("Champs3") = Aff1(i) objRecordset("Champs4") = Aff2(i) objRecordset("Champs5") = Aff3(i) objRecordset.Update Next End Function |
Salut Mister lameche,
je n'ai pas autant de temps que toi pour coder à ce que je vois, toutefois, j'ai moi aussi rafiné le code ... je vais regarder le tien mais en attendant, tu peux regarder celui-ci, chez moi il vire impect :-) et oui, effectivement tu verras que j'ai corrigé beaucoup de choses. serait-ce "shumarrer" ?
'-------------------------------------------------------------------------
' Script de description des Hdd dans une page web et/ou une base Access
' ------------------------------------------------------------------------
'
'*************************************************************************
'Constante d'accèss au fichier *.mdb
'
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Const MoteurDeRecherche = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
'
' Déclaration des variables de la base de données ACCESS
'
Dim oFS, objConnection, objRecordset
'*************************************************************************
'
Dim objWMIService, colItems, DestHtml
'Créer un objet fichier
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
'********-----------------------------------------------------************
Dim cnt
Dim Aff()
Dim Aff0()
Dim Aff1()
Dim Aff2()
Dim Aff3()
cnt = 0
Redim Aff(cnt)
Redim Aff0(cnt)
Redim Aff1(cnt)
Redim Aff2(cnt)
Redim Aff3(cnt)
DestHtml = "hd.html"
Select Case WScript.Arguments.Count
Case 0
' Default if none specified is local computer (".")
Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
strComputer = objItem.Name
Next
Case 1
' Command line parameter can either be a computer name
' or "/?" to request online help
strComputer = Wscript.Arguments(0)
if InStr( strComputer, "?" ) > 0 Then Syntax
Case Else
' Maximum is 1 command line parameter
Syntax
End Select
Display (strComputer)
CreateHTML (DestHTML )
CreateBDAccess()
Set objWMIService = Nothing
Set colItems = Nothing
'
'**** Fin du script
WScript.Quit
Function Display( strComputer )
Dim objWMIServ, colonnesItem
On Error Resume Next
Set objWMIServ = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
If Err.Number Then
WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _
" " & Err.Description
Err.Clear
Syntax
End If
On Error GoTo 0
Set colonnesItem = objWMIServ.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
For Each objItem in colonnesItem
Aff(cnt) = strComputer
Aff0(cnt) = Mid(objItem.Name,1,1)
If ( objItem.Size > 0 ) Then
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )
End If
If (objItem.FreeSpace > 0) Then
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )
End If
If ( (objItem.Size > 0) And (objItem.FreeSpace > 0) ) Then
Aff3(cnt) = ( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & vbCrLf
End If
cnt = cnt + 1
Redim Preserve Aff(cnt)
ReDim Preserve Aff0(cnt)
Redim Preserve Aff1(cnt)
Redim Preserve Aff2(cnt)
Redim Preserve Aff3(cnt)
Next
Set objWMIServ = Nothing
Set colonnesItem = Nothing
End Function
' ----------------------------------------------------------
Function CreateHTML(filename)
Dim ts
Set ts = oFS.CreateTextFile(filename,True)
ts.writeline "<HTML>"
ts.WriteLine "<BODY>"
ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>"
ts.writeline "<table border=1 cellspacing=1 width=100%>"
ts.writeline "<tr>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Name</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Drive</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Size</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Free</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>% Free</b></td>"
ts.writeline "</tr>"
ts.writeline "<tr>"
For i = 0 to cnt
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>"
ts.writeline "</tr>"
Next
ts.writeline "</table>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<b><font size=2>Remanier le 21 juin 2005 lol</font></b>"
ts.WriteLine "</CENTER></BODY>"
ts.WriteLine "</HTML>"
ts.close
Set ts = Nothing
End Function
' ----------------------------------------------------------
Function CreateBDAccess()
Dim Fichier, Disque, AccessFichier
'Nom du fichier MSAccess
Fichier = InputBox(msgTexte, "Saisie du fichier à créer", "C:\MaBase.MDB")
'Établie un objet ADO pour déplacement dans objet
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
'Lecteur courant ?
Disque = Mid(Fichier, 1, 2)
'Capture du lecteur
Set oLecteur = oFS.GetDrive(Disque)
'Si lecteur prêt ?
If (oLecteur.IsReady) Then
'Si le fichier existe ?
If (oFS.FileExists(Fichier)) Then
'Accroche le fichier sur le moteur de recherche
AccesFichier = MoteurDeRecherche & Fichier
'Ouverture du fichier access
objConnection.Open AccesFichier
'Création d'un ensemble "recordset" sur toutes les données souhaitées
objRecordset.Open "SELECT * FROM EspaceDisk" , objConnection, adOpenStatic, adLockOptimistic
End If
End If
For i = 0 To (cnt -1)
objRecordset.AddNew
objRecordset("Ordinateur") = Aff(i)
objRecordset("Lecteur") = Aff0(i)
objRecordset("Grandeur") = Aff1(i)
objRecordset("Disponible") = Aff2(i)
objRecordset("Ratio") = Aff3(i)
objRecordset.Update
Next
objConnection.Close
Set objConnection = Nothing
Set objRecordset = Nothing
Set oFS = Nothing
Set oLecteur = Nothing
End Function
Je crois qu'il n'y as pas de mauvaise manière, il suffit d'obtenir le bon résultat, l'erreur que j'avais occure lorsque l'une des partitions d'un disque quelconque n'est pas formatté. Or c'est pour cela que j'ai rajouté un contrôle sur la lecture. Il y a encore du travail, mais ça tient la route :-) Lupin ~L'essentiel est invisible pour les yeux~ ~On ne voit bien qu'avec le coeur~ |
En faite avec le code ci dessus ca creer Une nouvelle Base de donnée si j ai bien compris biensur desolé je debute lool
En faite MOi ma base est deja creé sous Access elle est Nommé "BdDisque" avec une Table Applée "EspaceDisque" ET qui contient les champs suivants: "Nom" "Drive" "Size" "Free" "Pourcentage" "Date " Moi je souhaite UNIQUEMENT ENVOYER LES DONNEES RENVOYe PAR MON SCRIPT dans ma base de données que j ai deja creé sur Access . Il faut que a chaque lancement du script les données soit memorise dans cette base voila ALors si Lupin ou quelqu un pouvait m aider se serais sympa merci voici mon script qui fonctionne deja pour la recuperation des données: '---------------------------------------------------------- ' Script de description des Hdd dans une page web ' ---------------------------------------------------------- Dim cnt dim Aff() dim Aff0() dim Aff1() dim Aff2() dim Aff3() cnt = 0 Redim Aff(cnt) Redim Aff0(cnt) Redim Aff1(cnt) Redim Aff2(cnt) Redim Aff3(cnt) Select Case WScript.Arguments.Count Case 0 ' Default if none specified is local computer (".") Set objWMIService = GetObject( "winmgmts://./root/cimv2" ) Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 ) For Each objItem in colItems strComputer = objItem.Name Next Case 1 ' Command line parameter can either be a computer name ' or "/?" to request online help strComputer = Wscript.Arguments(0) if InStr( strComputer, "?" ) > 0 Then Syntax Case Else ' Maximum is 1 command line parameter Syntax End Select Display( strComputer ) Function Display( strComputer ) On Error Resume Next Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" ) If Err.Number Then WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _ " " & Err.Description Err.Clear Syntax End If On Error GoTo 0 ' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48) Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48) For Each objItem in colItems Aff(cnt) = strComputer Aff0(cnt) = objItem.Name & vbTab Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) ) Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) ) Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _ vbCrLf cnt = cnt + 1 Redim Preserve Aff(cnt) Redim Preserve Aff0(cnt) Redim Preserve Aff1(cnt) Redim Preserve Aff2(cnt) Redim Preserve Aff3(cnt) Next End Function ' ---------------------------------------------------------- Dim fso Set fso = WScript.CreateObject("Scripting.FileSystemObject") DestHtml = "hd.html" CreateHTML DestHTML Sub CreateHTML(filename) dim ts set ts=fso.CreateTextFile(filename,true) ts.writeline "<HTML>" ts.WriteLine "<BODY>" ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>" ts.writeline "<table border=1 cellspacing=1 width=100%>" ts.writeline "<tr>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Name</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Drive</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Size</b></td>" ts.writeline "<td width=20%>" ts.writeline "<p align=center><b>Free</b></td>" ts.writeline "<td width=20%>" ts.wri |