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 fichier ?
- Comment lister les fichiers d'un dossier ?
- Comment obtenir des informations sur fichier ?
- Comment obtenir les informations étendues d'un fichier ?
- Comment copier un fichier ?
- Comment effacer un fichier ?
- Comment déplacer,renommer un fichier ?
- Comment lire le contenu d'un fichier texte ?
- Comment ouvrir un fichier texte en Unicode ?
- Comment écrire dans un fichier texte ?
- Comment obtenir le nombre de lignes d'un fichier texte ?
- Comment agir sur tous les fichiers d'un répertoire ?
La méthode FileExists exposée par la classe FileSystemObject teste l'existence d'un fichier en fonction de son nom.
Code vb : | Sélectionner tout |
1 2 3 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") MsgBox oFSO.FileExists("c:\tmp\Fichier1.txt") |
Une boucle For Each permet d'énumérer l'ensemble des fichiers :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | Dim stRep 'Nom du répertoire à parcourir Dim oFSO,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "C:\Tmp" If oFSO.FolderExists(stRep) Then For each oFl in oFSO.GetFolder(stRep).Files Wscript.Echo oFl.Name Next End If |
Les propriétés de l'objet File
- Attributes : attributs du fichier.
- 0 : Normal. Aucun attribut n'est défini.
- 1 : ReadOnly : fichier en lecture seule (attribut en lecture/ecriture)
- 2 : Hidden : fichier caché (attribut en lecture/ecriture)
- 4 : System : fichier système (attribut en lecture/ecriture)
- 32 : Archive : fichier archivé (attribut en lecture/ecriture)
- 1024 : Lien ou raccourci. L'attribut est lecture seule. (attribut en lecture seule)
- 2048 : Compressed : fichier compressé (attribut en lecture seule)
- DateCreated : Date de création du fichier
- DateLastAccessed : Date du dernier accès au fichier
- DateLastModified : Date de dernière modification
- Drive : Lettre désignant l'unité de disque d'où est issu le dossier.
- Name : Nom du fichier. Exemple : Fichier1.txt (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 fichier. Exemple : c:\tmp\fichier1.txt
- ShortName : Nom court sur 8 caractères maximum. Exemple : MONFIC~1.TXT
- ShortPath : Chemin complet d'accès au fichier où chaque composant respecte la norme évoquée pour ShortName. Exemple D:\ABCDEF1~1\MONFIC~1.TXT
- Size : Taille du fichier en octets.
- Type : Type du fichier. Exemple : Document Texte. C'est ce type qui est affiché dans l'explorateur Windows.
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 | Dim stFichier 'Nom du Fichier a tester Dim oFSO,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") stFichier = "c:\tmp\Nouveau Document texte.txt" If oFSO.FileExists(stFichier) Then Set oFl = oFSO.GetFile(stFichier) MsgBox "Attributes :" & oFl.Attributes & vbCrlf & _ "DateCreated :" & oFl.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFl.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFl.DateLastModified & vbCrlf & _ "Drive :" & oFl.Drive & vbCrlf & _ "Name :" & oFl.Name & vbCrlf & _ "ParentFolder :" & oFl.ParentFolder & vbCrlf & _ "Path :" & oFl.Path & vbCrlf & _ "ShortName :" & oFl.ShortName & vbCrlf & _ "ShortPath :" & oFl.ShortPath & vbCrlf & _ "Size :" & oFl.Size & vbCrlf & _ "Type :" & oFl.Type End If |
La bibliothèque « Microsoft Shell Controls and Automation » permet, grâce à la fonction GetDetailsOf, d'accéder aux propriétés étendues :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | stRep="d:\MesPhotos" stFichier ="photo.jpg" Set oShell = CreateObject("Shell.Application") Set oFolder = oShell.Namespace(stRep) Set oFichier = oFolder.Items.Item(stFichier) 'Affiche les propriétés étendues du fichier For i = 0 to 34 Wscript.Echo "[" & i & "] " & oFolder.GetDetailsOf(oFolder.Items, i ) & " : " & oFolder.GetDetailsOf(oFichier, i) Next |
le résultat :
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
[0] Nom : photo.jpg
[1] Taille : 900 Ko
[2] Type : Image JPEG
[3] Date de modification : 07/09/2009 18:26
[4] Date de création : 31/10/2010 14:01
[5] Date d'accès : 01/11/2010 13:32
[6] Attributs : A
[7] État : Connecté
[8] Propriétaire : DELLGX280\philippe
[9] Auteur :
[10] Titre :
[11] Objet :
[12] Catégorie :
[13] Pages : 1
[14] Commentaires :
[15] Copyright :
[16] Artiste :
[17] Titre de l'album :
[18] Année :
[19] Numéro de piste :
[20] Genre :
[21] Durée :
[22] Débit :
[23] Protégée :
[24] Modèle d'appareil photo : 5800 Xpres
[25] Date du cliché : 07/09/2009 19:26
[26] Dimensions : 2048 x 1536
[27] : 2048 pixels
[28] : 1536 pixels
[29] Nom de l'épisode :
[30] Description du programme :
[31] :
[32] Taille de l'échantillon audio :
[33] Taux d'échantillonnage audio :
[34] Chaînes :
Il est possible d'utiliser deux techniques différentes pour copier un fichier :
Depuis le FSO directement grâce à la méthode CopyFile
Code vb : | Sélectionner tout |
1 2 3 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.CopyFile "c:\tmp\Fichier1.txt","c:\tmp\Fichier2.txt",True ' True : pour copier en "écrasant" destination si existe.. |
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFS,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt") oFl.Copy "c:\tmp\fichier3.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers en lectures seules. |
Il est possible d'utiliser deux techniques différentes pour effacer un fichier :
Depuis le FSO directement grâce à la méthode DeleteFile
Code vb : | Sélectionner tout |
1 2 3 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.DeleteFile "c:\tmp\fichier1.txt",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules. |
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFS,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt") oFl.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.
Il est possible d'utiliser deux techniques différentes pour déplacer un fichier :
Depuis le FSO directement grâce à la méthode MoveFile
Code vb : | Sélectionner tout |
1 2 3 | Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") oFSO.MoveFile "c:\tmp\Fichier1.txt","c:\tmp\fichier2.txt" |
Code vb : | Sélectionner tout |
1 2 3 4 | Dim oFS,oFl Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt") oFl.Move "D:\tmp\fichier2.txt" ' Déplacement vers autre unité de disque tout en renommant le fichier... |
Lecture ligne à ligne d'un fichier texte :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) while Not f.AtEndOfStream wscript.echo f.ReadLine Wend f.Close |
Lecture de la totalité d'un fichier texte :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 | Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) Wscript.echo f.ReadAll f.Close |
En utilisant le 4e paramètre d'openTextFile :
OpenTextFile(filename[, iomode[, create[, format]]])
avec format :
- TristateFalse (0) Ouvre le fichier en ASCII.
- TristateTrue (-1) Ouvre le fichier en Unicode.
- TristateUseDefault (-2) Ouvre le fichier en utilisant le paramètre système par défaut.
Code vb : | Sélectionner tout |
1 2 3 | Const TristateTrue = -1 set f = fso.opentextfile("c:\MonFichier.txt", 1, true,TristateTrue) |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 | Const ForWriting = 2 Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("c:\temp\ecr.txt", ForWriting,true) f.write("Salut") |
À l'aide la propriété Line de l'objet fichier :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Const ForReading = 1, ForWriting = 2 Dim oFso, f Dim ts, nl Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\test1.txt", ForReading) ts = f.ReadAll '-- Lit la totalité du fichier Wscript.echo f.Line '-- Récupère le nombre de lignes |
Grâce à une fonction récursive.
Utilisez le principe présenté dans le script suivant en modifiant la procédure ListeFichier.
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 | Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject") stRep = "d:\users" LectRep stRep ' ' Fonction récursive de parcours de répertoire ' Sub LectRep (stR ) For each oFld in oFSO.GetFolder(stR).SubFolders Wscript.Echo "--------------- " & oFld.PAth & "-----------------" ListeFichier (oFld.PATH) LectRep oFld.PATH Next end sub ' ' Listing des fichiers du répertoire ' Sub ListeFichier (stR) For each oFl in oFSO.GetFolder(stR).Files Wscript.Echo oFl.Name Next End sub |
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.