Aller au contenu principal

VBS - Obtenir la liste des fichiers et générer un CSV

Besoin d'une liste de fichiers au format CSV ? Utilisez ce VBScript pour scanner un dossier, sous-dossiers inclus, et sortir les détails des fichiers comme la taille, la date et le propriétaire pour une analyse facile.

· 2 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

VBS - Obtenir la liste des fichiers et générer un CSV

⚡
TL;DR

Cet article partage un VBScript (files2csv.vbs) qui parcourt récursivement un dossier Windows et exporte les détails des fichiers — chemin, nom, dates de création/d'accès/de modification, taille, type et propriétaire — vers un fichier CSV, prêt à être analysé dans Excel ou avec Python/Pandas.

Il y a six ans, j'avais besoin d'un script DOS capable de récupérer la liste de tous les fichiers d'un dossier sur une machine Windows et de générer un fichier .csv avec cette liste.

Une fois le fichier .csv généré, je pouvais le traiter dans MS Excel, par exemple, et le trier/filtrer ou, pourquoi pas, dans Python avec la librairie Pandas.

Voici ce que produit ce script : un fichier CSV listant tous les fichiers d'un dossier, avec les dates, la taille, le type et le propriétaire.

"FilePathAndName";"ParentFolder";"Name";"DateCreated";"DateLastAccessed";"DateLastModified";"Size";"Type";"Suffix";"Owner";
"C:\temp\test\test.csv";"C:\temp\test";"test.csv";"21-01-24 09:07:44";"21-01-24 09:09:08";"21-01-24 09:09:08";"472";"CSV Microsoft Excel File";"csv";"Christophe";
"C:\temp\test\test.vbs";"C:\temp\test";"test.vbs";"21-01-24 08:43:49";"21-01-24 09:09:03";"21-01-24 09:09:03";"3246";"VBScript File";"vbs";"Christophe";

Voici le script qui le génère. Copiez/collez la source ci-dessous et enregistrez-la dans un fichier, disons c:\files2csv.vbs. Ouvrez une console DOS, lancez cd c:\ puis cscript files2csv.vbs. Quand le travail est terminé, vous obtenez le listing dans files2csv.csv.

'------------------------------------------------------------
'
' Get the list of files of the current folder + sub-folders and
' generate a .csv file with file information like path, size,
' extensions, author, ... making then easy to work with that list
' in Excel
'
' Based on a script of
' @author Peter Pinchao Liu (https://github.com/lpcclown)
' then modified by Christophe Avonture
'
' @Link : https://github.com/lpcclown/fileScan
'
'------------------------------------------------------------
Option Explicit
Dim objFSO, objCSVFile
' ------------------------------------
' Loop all file under one folder
' ------------------------------------
Function FilesTree(sPath)
Dim objFolder, objSubFolders, objSubFolder, objFiles, objFile
Dim objShell
Dim strFileName
Set objFolder = objFSO.GetFolder(sPath)
Set objSubFolders = objFolder.SubFolders
Set objFiles = objFolder.Files
For Each objFile In objFiles
objCSVFile.Write chr(34) & objFile.Path & chr(34) & ";"
objCSVFile.Write chr(34) & objFile.ParentFolder & chr(34) & ";"
objCSVFile.Write chr(34) & objFile.Name & chr(34) & ";"
objCSVFile.Write chr(34) & objFile.DateCreated & chr(34) & ";"
objCSVFile.Write chr(34) & objFile.DateLastAccessed & chr(34) & ";"
objCSVFile.Write chr(34) & objFile.DateLastModified & chr(34) & ";"
objCSVFile.Write chr(34) & objFile.Size & chr(34) & ";"
objCSVFile.Write chr(34) & objFile.Type & chr(34) & ";"
objCSVFile.Write chr(34) & objFSO.getextensionname(objFile.Path) & chr(34) & ";"
' Get file owner
Set objShell = CreateObject ("Shell.Application")
Set objFolder = objShell.Namespace (sPath)
For Each strFileName in objFolder.Items
if objFolder.GetDetailsOf (strFileName, 0) = objFile.Name Then
objCSVFile.Write chr(34) & objFolder.GetDetailsOf (strFileName, 10) & chr(34) & ";"
End If
Next
objCSVFile.Writeline
Next
For Each objSubFolder In objSubFolders
FilesTree(objSubFolder.Path) ' Recursion
Next
Set objFiles = Nothing
Set objSubFolders = Nothing
Set objFolder = Nothing
End Function
Dim sResultFileName, sFolderName
Dim wshShell
Const ForWriting = 2
' Create new CSV file : same name of this script but with
' .csv extension
sResultFileName = wScript.ScriptFullName
sResultFileName = replace(sResultFileName, ".vbs", ".csv")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objCSVFile = objFSO.CreateTextFile(sResultFileName, ForWriting, True)
' Write comma delimited list of columns in new CSV file.
objCSVFile.Write chr(34) & "FilePathAndName" & chr(34) & ";" & _
chr(34) & "ParentFolder" & chr(34) & ";" & _
chr(34) & "Name" & chr(34) & ";" & _
chr(34) & "DateCreated" & chr(34) & ";" & _
chr(34) & "DateLastAccessed" & chr(34) & ";" & _
chr(34) & "DateLastModified" & chr(34) & ";" & _
chr(34) & "Size" & chr(34) & ";" & _
chr(34) & "Type" & chr(34) & ";" & _
chr(34) & "Suffix" & chr(34) & ";" & _
chr(34) & "Owner" & chr(34) & ";"
objCSVFile.Writeline
Set wshShell = CreateObject("WScript.Shell")
sFolderName = wshShell.CurrentDirectory
Set wshShell = Nothing
wScript.echo "Scan the " & sFolderName & ", please wait..."
wScript.echo ""
FilesTree(sFolderName)
wScript.echo "Done, file " & sResultFileName & " has been created"

Ce script VBScript parcourt tous les fichiers du dossier courant et de ses sous-dossiers, puis exporte les informations de chaque fichier (chemin, taille, date de modification, propriétaire, etc.) dans un fichier CSV portant le même nom que le script. Le résultat peut ensuite être ouvert dans Excel pour analyser facilement la structure des fichiers.

Vous aviez besoin d'un séparateur tabulation ?

Si oui, faites simplement un rechercher/remplacer pour changer ";" en vbTab partout.


Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?