Inventorier les fichiers NSF sur le disque et remonter la taille de chaque fichier
1 réponse
Greg
Bonjour =E0 tous,
Pour commencer, je tiens =E0 dire que je suis un newbie en VBS. Je n'ai
pas vraiment l'esprit d'un d=E9veloppeur.
Pour un grand projet, je dois identifier les archives Lotus Notes
(NSF) sur mes postes de travail (pr=E8s de 6000).
Pour cela, j'ai un script qui recherche les fichiers NSF et renvoi
dans un fichier txt. Il fonctionne.
Toutefois, je veux que le script me remonte la taille de chaque
fichier.
J'ai essay=E9 avec des fonctions du type "objFile.FileSize" Que je
n'arrive pas =E0 int=E9grer correctement.
Private Sub ShowFilesLotus()
Const HARD_DISK =3D 3
Dim objWMIService, colDisks, colFiles
Dim objDico, objTabExt, objDisk, objFile
Dim wshShell
Dim strComputer, i
Dim cles, strList
Dim ObjRapport, ObjFilerapport
Const ForWriting =3D 2, ForAppending =3D 8
strComputer =3D "."
objTabExt =3D "nsf"
Set wshShell =3D Wscript.CreateObject ("Wscript.Shell")
Set ObjRapport =3D CreateObject("Scripting.FileSystemObject" )
Set ObjFileRapport =3D ObjRapport.OpenTextFile("c:\Lotus.txt",
ForAppending, True)
Set objDico =3D CreateObject("Scripting.Dictionary")
objDico.CompareMode =3D VBBinaryCompare
Set colDisks =3D objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType =3D " & HARD_DISK &
"")
For Each objDisk in colDisks
Set colFiles =3D objWMIService.ExecQuery _
("Select * from CIM_DataFile where Drive =3D '" &_
objDisk.Name & "' And Extension =3D '" & objTabExt &"'")
For Each objFile in colFiles
'
'
If Mid(LCase(objFile.Path),2, 13) <> "program files" And _
Mid(LCase(objFile.Path),2, 7) <> "windows" Then
objDico.Add objFile.Name ,""
End if
Next
Next
Set colFiles =3D Nothing
Set colDisks =3D Nothing
Set objWMIService =3D Nothing
cles =3D objDico.Keys
For i =3D 0 To objDico.Count-1
ObjFileRapport.Writeline wshShell.ExpandEnvironmentStrings
("%COMPUTERNAME%") _
&vbTab& cles(i) &vbCr
Next
ObjFileRapport.WriteBlankLines(2)
ObjFileRapport.close
Set objDico =3D Nothing
Set wshShell =3D Nothing
End Sub
---------------------------------------------------------------------------=
-----------------------------------------------------------------
Merci !
Je pr=E9cise que le script sera ex=E9cut=E9 =E0 distance =E0 l'aide de
LANDesk...
NB : En plus de la taille, j'aimerais rajouter le nom de la machine,
ainsi que le nom de l'utilisateur r=E9el Lotus (j'ai un autre VBS pour
aller piocher dans le notes.ini. Avec un peu de chance j'arriverais =E0
imbriquer les deux !!)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Greg
On 6 juin, 19:17, Greg wrote:
Bonjour à tous,
Pour commencer, je tiens à dire que je suis un newbie en VBS. Je n'a i pas vraiment l'esprit d'un développeur.
Pour un grand projet, je dois identifier les archives Lotus Notes (NSF) sur mes postes de travail (près de 6000). Pour cela, j'ai un script qui recherche les fichiers NSF et renvoi dans un fichier txt. Il fonctionne. Toutefois, je veux que le script me remonte la taille de chaque fichier. J'ai essayé avec des fonctions du type "objFile.FileSize" Que je n'arrive pas à intégrer correctement.
Private Sub ShowFilesLotus() Const HARD_DISK = 3 Dim objWMIService, colDisks, colFiles Dim objDico, objTabExt, objDisk, objFile Dim wshShell Dim strComputer, i Dim cles, strList Dim ObjRapport, ObjFilerapport Const ForWriting = 2, ForAppending = 8
strComputer = "." objTabExt = "nsf"
Set wshShell = Wscript.CreateObject ("Wscript.Shell")
Set ObjRapport = CreateObject("Scripting.FileSystemObject" ) Set ObjFileRapport = ObjRapport.OpenTextFile("c:Lotus.txt", ForAppending, True)
Set objDico = CreateObject("Scripting.Dictionary") objDico.CompareMode = VBBinaryCompare
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 &"'") For Each objFile in colFiles ' ' If Mid(LCase(objFile.Path),2, 13) <> "program files" And _ Mid(LCase(objFile.Path),2, 7) <> "windows" Then objDico.Add objFile.Name ,"" End if Next Next Set colFiles = Nothing Set colDisks = Nothing Set objWMIService = Nothing
cles = objDico.Keys For i = 0 To objDico.Count-1 ObjFileRapport.Writeline wshShell.ExpandEnvironmentStrings ("%COMPUTERNAME%") _ &vbTab& cles(i) &vbCr Next ObjFileRapport.WriteBlankLines(2) ObjFileRapport.close Set objDico = Nothing Set wshShell = Nothing End Sub ------------------------------------------------------------------------- -------------------------------------------------------------------
Merci !
Je précise que le script sera exécuté à distance à l'aide de LANDesk...
NB : En plus de la taille, j'aimerais rajouter le nom de la machine, ainsi que le nom de l'utilisateur réel Lotus (j'ai un autre VBS pour aller piocher dans le notes.ini. Avec un peu de chance j'arriverais à imbriquer les deux !!)
Personne n'a d'idée ? Je suis vraiment perdu :/ Merci !!
On 6 juin, 19:17, Greg <dragu...@gmail.com> wrote:
Bonjour à tous,
Pour commencer, je tiens à dire que je suis un newbie en VBS. Je n'a i
pas vraiment l'esprit d'un développeur.
Pour un grand projet, je dois identifier les archives Lotus Notes
(NSF) sur mes postes de travail (près de 6000).
Pour cela, j'ai un script qui recherche les fichiers NSF et renvoi
dans un fichier txt. Il fonctionne.
Toutefois, je veux que le script me remonte la taille de chaque
fichier.
J'ai essayé avec des fonctions du type "objFile.FileSize" Que je
n'arrive pas à intégrer correctement.
Private Sub ShowFilesLotus()
Const HARD_DISK = 3
Dim objWMIService, colDisks, colFiles
Dim objDico, objTabExt, objDisk, objFile
Dim wshShell
Dim strComputer, i
Dim cles, strList
Dim ObjRapport, ObjFilerapport
Const ForWriting = 2, ForAppending = 8
strComputer = "."
objTabExt = "nsf"
Set wshShell = Wscript.CreateObject ("Wscript.Shell")
Set ObjRapport = CreateObject("Scripting.FileSystemObject" )
Set ObjFileRapport = ObjRapport.OpenTextFile("c:Lotus.txt",
ForAppending, True)
Set objDico = CreateObject("Scripting.Dictionary")
objDico.CompareMode = VBBinaryCompare
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 &"'")
For Each objFile in colFiles
'
'
If Mid(LCase(objFile.Path),2, 13) <> "program files" And _
Mid(LCase(objFile.Path),2, 7) <> "windows" Then
objDico.Add objFile.Name ,""
End if
Next
Next
Set colFiles = Nothing
Set colDisks = Nothing
Set objWMIService = Nothing
cles = objDico.Keys
For i = 0 To objDico.Count-1
ObjFileRapport.Writeline wshShell.ExpandEnvironmentStrings
("%COMPUTERNAME%") _
&vbTab& cles(i) &vbCr
Next
ObjFileRapport.WriteBlankLines(2)
ObjFileRapport.close
Set objDico = Nothing
Set wshShell = Nothing
End Sub
------------------------------------------------------------------------- -------------------------------------------------------------------
Merci !
Je précise que le script sera exécuté à distance à l'aide de
LANDesk...
NB : En plus de la taille, j'aimerais rajouter le nom de la machine,
ainsi que le nom de l'utilisateur réel Lotus (j'ai un autre VBS pour
aller piocher dans le notes.ini. Avec un peu de chance j'arriverais à
imbriquer les deux !!)
Personne n'a d'idée ?
Je suis vraiment perdu :/
Merci !!
Pour commencer, je tiens à dire que je suis un newbie en VBS. Je n'a i pas vraiment l'esprit d'un développeur.
Pour un grand projet, je dois identifier les archives Lotus Notes (NSF) sur mes postes de travail (près de 6000). Pour cela, j'ai un script qui recherche les fichiers NSF et renvoi dans un fichier txt. Il fonctionne. Toutefois, je veux que le script me remonte la taille de chaque fichier. J'ai essayé avec des fonctions du type "objFile.FileSize" Que je n'arrive pas à intégrer correctement.
Private Sub ShowFilesLotus() Const HARD_DISK = 3 Dim objWMIService, colDisks, colFiles Dim objDico, objTabExt, objDisk, objFile Dim wshShell Dim strComputer, i Dim cles, strList Dim ObjRapport, ObjFilerapport Const ForWriting = 2, ForAppending = 8
strComputer = "." objTabExt = "nsf"
Set wshShell = Wscript.CreateObject ("Wscript.Shell")
Set ObjRapport = CreateObject("Scripting.FileSystemObject" ) Set ObjFileRapport = ObjRapport.OpenTextFile("c:Lotus.txt", ForAppending, True)
Set objDico = CreateObject("Scripting.Dictionary") objDico.CompareMode = VBBinaryCompare
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 &"'") For Each objFile in colFiles ' ' If Mid(LCase(objFile.Path),2, 13) <> "program files" And _ Mid(LCase(objFile.Path),2, 7) <> "windows" Then objDico.Add objFile.Name ,"" End if Next Next Set colFiles = Nothing Set colDisks = Nothing Set objWMIService = Nothing
cles = objDico.Keys For i = 0 To objDico.Count-1 ObjFileRapport.Writeline wshShell.ExpandEnvironmentStrings ("%COMPUTERNAME%") _ &vbTab& cles(i) &vbCr Next ObjFileRapport.WriteBlankLines(2) ObjFileRapport.close Set objDico = Nothing Set wshShell = Nothing End Sub ------------------------------------------------------------------------- -------------------------------------------------------------------
Merci !
Je précise que le script sera exécuté à distance à l'aide de LANDesk...
NB : En plus de la taille, j'aimerais rajouter le nom de la machine, ainsi que le nom de l'utilisateur réel Lotus (j'ai un autre VBS pour aller piocher dans le notes.ini. Avec un peu de chance j'arriverais à imbriquer les deux !!)
Personne n'a d'idée ? Je suis vraiment perdu :/ Merci !!