Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

6 réponses
Avatar
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 & "\root\cimv2")

Set colFileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='D:\Notes\data'} 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

6 réponses

Avatar
Jacques Barathon [MS]
"Eric Galais" wrote in message
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

Avatar
M.Claveau (MVP)
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
Avatar
M.Claveau (MVP)
Re !

Sinon, un simple :

dir C:data*.nfs /S

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





--
@-salutations

Michel Claveau
Avatar
Eric Galais
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

Avatar
Gilles LAURENT [MVP]
"Eric Galais" a écrit dans le message de
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
Avatar
Eric Galais
J'arrive un peu tard mais merci Gille.


"Gilles LAURENT [MVP]" a écrit dans le message de news:
%
"Eric Galais" a écrit dans le message de
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