[Vbs- Ps] Lister les fichiers d"un certain type dans une arborescence

Le
Eric Galais
Bonjour tout le monde,

Je m'occupe d'un déploiement de lotus sur 2500 machines et je me tappe
régulierement des controles à faires à la main.
J'ai scripté un grand nombre d'opérations mais par manque de temps je fais
appel à vous.

Actuellement, je récupère les infos suivante:
- Chemins du prog et data de lotus
- Vérif présence notes.ini dans la partie prog (ca veut dire install mono
user)
- Récupération de la variable KeyFilename pour avoir le chemin et nom de son
ID lotus.
- Vérif si l'id est dans le rép data de lotus.


J'aimerais en VBS récupérer la taille totale de tous les fichiers NSF du
répertoire data de lotus, sous-répertoires compris.
J'arrive a gérer un répertoire mais pas la sous arborescence.


strComputer = "."

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

Set colFileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='D:Notesdata'} Where
ResultClass = CIM_DataFile")
filesize1 = 0
For Each objFile In colFileList
if objFile.extension = "nsf" Then
filesize1 = filesize1 + objFile.FileSize
End If
Next
total_size1= filesize1 / 1048576

-


Possible d'avoir un coup de main svp?

Ou alors en Powershell en script séparé vu que je pense passer rapidement au
powershell.

Mon script principal faisant 170 lignes j'évite de vous le coller ici mais
si besoin je m'exécute.

Merci d'avance.

Eric
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques Barathon [MS]
Le #676016
"Eric Galais" news:
...
J'aimerais en VBS récupérer la taille totale de tous les fichiers NSF du
répertoire data de lotus, sous-répertoires compris.
J'arrive a gérer un répertoire mais pas la sous arborescence.

------------------------------------------
strComputer = "."

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

Set colFileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='D:Notesdata'} Where
ResultClass = CIM_DataFile")
filesize1 = 0
For Each objFile In colFileList
if objFile.extension = "nsf" Then
filesize1 = filesize1 + objFile.FileSize
End If
Next
total_size1= filesize1 / 1048576

-------------------------------------------


Possible d'avoir un coup de main svp?

Ou alors en Powershell en script séparé vu que je pense passer rapidement
au powershell.


Bonne idée :-)

En PowerShell, ça donnerait ceci en une seule ligne (je le précise car je
suppose que la ligne qui suit sera coupée au montage):

$total_size1 = (dir \$strComputerd$NotesData *.nsf -rec | measure-object
length -sum).sum

Pour l'exprimer en Mo:

$total_size1Mo = $total_size1 / 1MB

Cela dit, la requête WMI sera sans doute beaucoup plus performante si le
nombre de fichiers est très important. A tester...

Jacques

M.Claveau (MVP)
Le #676015
Bonsoir !

Je rentre juste de vacances (mais je repars dans 2 jours), à temps pour
suggérer un petit batch :

@echo off
for /F "delims=" %%i IN ('dir C:data*.nfs /S ^|find "fichier(s)"')
DO (set TOTAL=%%i)
echo Total:%TOTAL%


(juste 3 lignes, car comme l'a dit Jacques, attention aux coupûres
intempestives de lignes).






--
@-salutations

Michel Claveau
M.Claveau (MVP)
Le #676014
Re !

Sinon, un simple :

dir C:data*.nfs /S

Donnera l'information, dans l'avant-dernière ligne.





--
@-salutations

Michel Claveau
Eric Galais
Le #676013
Bonne idée :-)

En PowerShell, ça donnerait ceci en une seule ligne (je le précise car je
suppose que la ligne qui suit sera coupée au montage):

$total_size1 = (dir \$strComputerd$NotesData *.nsf -rec |
measure-object length -sum).sum

Pour l'exprimer en Mo:

$total_size1Mo = $total_size1 / 1MB

Cela dit, la requête WMI sera sans doute beaucoup plus performante si le
nombre de fichiers est très important. A tester...

Jacques


Impec, merci Jacques

Gilles LAURENT [MVP]
Le #680397
"Eric Galais" news:
| Bonjour tout le monde,

Bonjour,

[...]
| J'aimerais en VBS récupérer la taille totale de tous les fichiers NSF
| du répertoire data de lotus, sous-répertoires compris.
| J'arrive a gérer un répertoire mais pas la sous arborescence.

Ci-dessous le lien vers le script VBScript DirSlashS.vbs permettant de
parcourir de manière récursive les sous-dossiers d'un dossier racine
spécifié:
> cscript DirSlashS.vbs *.nsf

Le script DirSlashS.vbs :
http://groups.google.fr/group/microsoft.public.fr.scripting/msg/f41c826480b50631?hl=fr

Il ne vous reste plus qu'à insérer un compteur de taille :
TSize = TSize + oFile.Size

--
Gilles LAURENT [MVP]
http://glsft.free.fr
Eric Galais
Le #677214
J'arrive un peu tard mais merci Gille.


"Gilles LAURENT [MVP]" %
"Eric Galais" news:
| Bonjour tout le monde,

Bonjour,

[...]
| J'aimerais en VBS récupérer la taille totale de tous les fichiers NSF
| du répertoire data de lotus, sous-répertoires compris.
| J'arrive a gérer un répertoire mais pas la sous arborescence.

Ci-dessous le lien vers le script VBScript DirSlashS.vbs permettant de
parcourir de manière récursive les sous-dossiers d'un dossier racine
spécifié:
> cscript DirSlashS.vbs *.nsf

Le script DirSlashS.vbs :
http://groups.google.fr/group/microsoft.public.fr.scripting/msg/f41c826480b50631?hl=fr

Il ne vous reste plus qu'à insérer un compteur de taille :
TSize = TSize + oFile.Size

--
Gilles LAURENT [MVP]
http://glsft.free.fr




Publicité
Poster une réponse
Anonyme