FAQ VBScriptConsultez toutes les FAQ
Nombre d'auteurs : 16, nombre de questions : 108, dernière mise à jour : 2 mars 2019 Ajouter une question
Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et des membres du forum VB.
Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributions VBScript.
Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacter par MP ThierryAIM ou bbil.
L'équipe de rédaction de Developpez.com vous remercie pour votre participation passée et à venir.
- Comment tester l'existence d'un répertoire ?
- Comment lister les sous répertoires d'un dossier ?
- Comment obtenir des informations sur un dossier ?
- Comment créer un répertoire ?
- Comment créer une arborescence ?
- Comment copier un répertoire et son contenu ?
- Comment effacer un répertoire et son contenu ?
- Comment compresser un dossier ?
- Comment déplacer un répertoire et son contenu ?
Avec la méthode FolderExists
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") MsgBox "C:\Program Files\Fichiers communs >> " & oFSO.FolderExists("C:\Program Files\Fichiers communs") MsgBox "C:\Program Files\Fichiers communs\RepBidon >> " & oFSO.FolderExists("C:\Program Files\Fichiers communs\RepBidon") |
Une boucle For Each permet d'énumérer l'ensemble des sous-dossiers :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | Dim stRep 'Nom du répertoire à parcourir Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "C:\Program Files\Fichiers communs" If oFSO.FolderExists(stRep) Then For each oFld in oFSO.GetFolder(stRep).SubFolders Wscript.Echo oFld.Name Next End If |
Les propriétés de l'objet Folder
- Attributes : attributs du dossier.
- 0 : Normal. Aucun attribut n'est défini.
- 1 : ReadOnly : Dossier en lecture seule (attribut en lecture/ecriture)
- 2 : Hidden : Dossier caché (attribut en lecture/ecriture)
- 4 : System : Dossier système (attribut en lecture/ecriture)
- 32 : Archive : Dossier archivé (attribut en lecture/ecriture)
- 2048 : Compressed : Dossier compress (attribut en lecture seule)
- DateCreated : Date de création du dossier
- DateLastAccessed : Date du dernier accès au dossier
- DateLastModified : Date de dernière modification
- Drive : Lettre désignant l'unité de disque d'où est issu le dossier.
- Files : Collection regroupant les fichiers du dossier
- IsRootFolder : Booléen qui définit si le dossier est le dossier racine de son unité de disque.
- Name : Nom du dossier. Exemple : Windows (propriété en lecture/ecriture)
- ParentFolder : Objet Folder correspondant au dossier parent. Si le dossier est un dossier RootFolder cette propriété retourne Nothing.
- Path : Chemin complet d'accès au dossier. Exemple : D:\Windows
- ShortName : Nom court sur 8 caractères maximum. Exemple ESSAI1~1
- ShortPath : Chemin complet d'accès au dossier où chaque composant respecte la norme évoquée pour ShortName. Exemple D:\ABCDEF1~1\ ESSAI1~1
- Size : Taille totale du dossier en octets. Il s'agit de la somme de la taille de tous les fichiers présents dans le dossier et ses sous-dossiers.
- SubFolders : Collection d'objet Folder regroupant les sous-dossiers.
- Type : Type du dossier. Dans tous les cas testés, il s'agit de FileFolder.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Dim stRep 'Nom du répertoire à parcourir Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "C:\Program Files\Fichiers communs" If oFSO.FolderExists(stRep) Then Set oFld = oFSO.GetFolder(stRep) MsgBox "Attributes :" & oFld.Attributes & vbCrlf & _ "DateCreated :" & oFld.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFld.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFld.DateLastModified & vbCrlf & _ "Drive :" & oFld.Drive & vbCrlf & _ "IsRootFolder :" & oFld.IsRootFolder & vbCrlf & _ "Name :" & oFld.Name & vbCrlf & _ "ParentFolder :" & oFld.ParentFolder & vbCrlf & _ "Path :" & oFld.Path & vbCrlf & _ "ShortName :" & oFld.ShortName & vbCrlf & _ "ShortPath :" & oFld.ShortPath & vbCrlf & _ "Size :" & oFld.Size & vbCrlf & _ "SubFolders.Count :" & oFld.SubFolders.count & vbCrlf & _ "Type :" & oFld.Type End If |
Il est possible d'utiliser deux techniques différentes pour créer un dossier :
Depuis le FSO directement
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") 'Crée le repertoire Set oFld=oFSO.CreateFolder ("D:\Essai") |
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFld=oFSO.GetFolder ("D:\") oFld.subFolders.Add("Essai") |
Il est possible d'utiliser une fonction récursive pour créer une arborescence.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | Option Explicit Dim ofso Set ofso = CreateObject("Scripting.FileSystemObject") CreerRep("c:\data\toto\titi\") Sub CreerRep(Chemin) If Not ofso.FolderExists(chemin) Then CreerRep(ofso.GetParentFolderName(chemin)) ofso.CreateFolder(chemin) End If End Sub |
Il est possible d'utiliser deux techniques différentes pour copier un dossier :
Depuis le FSO directement grâce à la méthode CopyFolder
Code vb : | Sélectionner tout |
1 2 3 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.CopyFolder "c:\tmp","c:\tmp2",True ' True : pour copier en "écrasant" destination si existe.. |
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") set oFld = oFSO.GetFolder("c:\tmp") oFld.Copy "c:\tmp2",True ' True : pour copier en "écrasant" destination si existe.. |
Il est possible d'utiliser deux techniques différentes pour effacer un dossier :
Depuis le FSO directement grâce à la méthode DeleteFolder
Code vb : | Sélectionner tout |
1 2 3 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.DeleteFolder "c:\tmp2",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules. |
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") set oFld = oFSO.GetFolder("c:\tmp2") oFld.Delete False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires en lectures seules. |
les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers en lecture seule.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim Source, Destination, MyHex, MyBinary, i Dim oShell, oApp, oFolder, oCTF, oFile Dim oFileSys Source = "C:\Temp" Destination = "C:\maSauvegarde.zip" MyHex = _ Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) For i = 0 To UBound(MyHex) MyBinary = MyBinary & Chr(MyHex(i)) Next Set oShell = CreateObject("WScript.Shell") Set oFileSys = CreateObject("Scripting.FileSystemObject") 'Creation du zip Set oCTF = oFileSys.CreateTextFile(Destination, True) oCTF.Write MyBinary oCTF.Close Set oCTF = Nothing Set oApp = CreateObject("Shell.Application") Set oFolder = oApp.NameSpace(Source) If Not oFolder Is Nothing Then _ oApp.NameSpace(Destination).CopyHere oFolder.Items wScript.Sleep 5000 Set oFile = Nothing |
Il est possible d'utiliser deux techniques différentes pour déplacer un dossier :
Depuis le FSO directement grâce à la méthode MoveFolder
Code vb : | Sélectionner tout |
1 2 3 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.MoveFolder "c:\tmp2","c:\tmp3" |
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") set oFld = oFSO.GetFolder("c:\tmp2") oFld.Move "C:\tmp3" |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.