IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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.

SommaireVB ScriptFichiers : le FileSystemObjectAccès aux Fichiers (12)
précédent sommaire suivant
 

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")

Mis à jour le 28 février 2007 SfJ5Rpw8

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

Mis à jour le 28 février 2007 SfJ5Rpw8

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

Mis à jour le 27 février 2014 SfJ5Rpw8 Tofalu

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 :

D:\>PropEtendues.vbs

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 :

Le nombre de propriétés est variable suivant l'OS. Ainsi si XP affiche 35 propriétés, on peut en trouver jusqu'à 266 sous Vista et 284 sous Windows 7.

Mis à jour le 27 février 2014

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..
où en utilisant la méthode copy de l'objet file

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.

Mis à jour le 28 février 2007 SfJ5Rpw8 Tofalu

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.
où en utilisant la méthode delete de l'objet File

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.

Mis à jour le 28 février 2007 SfJ5Rpw8 Tofalu

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"
où en utilisant la méthode move de l'objet file

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...

Mis à jour le 28 février 2007 SfJ5Rpw8 Tofalu

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

Mis à jour le 28 février 2007 SfJ5Rpw8

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)

Mis à jour le 27 février 2014 SfJ5Rpw8

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")

Mis à jour le 28 février 2007 SfJ5Rpw8

À 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

Mis à jour le 28 février 2007 ThierryAIM

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

Mis à jour le 27 février 2014 SfJ5Rpw8

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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.