ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Série de fonctions à effectuer sur des fichiers et dossiers   



L'auteur

Mike Gagnon
Canada Canada
Membre Simple
# 0000000025
enregistré le 14/10/2004

Gagnon Mike
Pte Claire Quebec - Canada
de la société MCRG Software
Fiche personnelle


Note des membres
19,7/20
3 votes


Contributions > 09 - Automation > Windows Scripting

Série de fonctions à effectuer sur des fichiers et dossiers
# 0000000061
ajouté le 17/11/2004 17:09:49 et modifié le 02/05/2005
consulté 11230 fois
Niveau expert

Version(s) Foxpro :
VFP 7.0

Description

Voici une série de fonctions à effectuer sur des fichiers et dossiers. Exemples copier, supprimer, renommer etc.

Ces fonctions requièrent que Windows Scripting soit installé.

Code source :
&& Script de démonstration qui emploie le FileSystemObject pour copier un dossier. Le script doit être couru sur l'ordinateur local.

#define OverwriteExisting  .t.
loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile("C:\scripts\*.txt" , "D:\Archive\" , OverwriteExisting)

&&Le script de démonstration qui emploie le FileSystemObject pour copier tout les fichiers '.txt' d'un dossier à un autre.

#define OverwriteExisting  .t.
loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile("C:\scripts\*.txt" , "D:\Archive\" , OverwriteExisting)

&& Script de démonstration qui emploie le FileSystemObject pour supprimer un fichier. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.DeleteFile("D:\ARCHIVE\software.txt")

&& Script de démonstration qui supprime tout les fichiers '.txt' dans un dossier qui sont en lecture-seule. Le script doit être couru sur l'ordinateur local.

#define DeleteReadOnly  .t.
loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.DeleteFile("C:\FSO\*.txt"), DeleteReadOnly)

&&Renvoie une liste de tous les dossiers dans le dossier 'Scripts'. Si l'ordinateur a plus d'un dossier de 'Scripts' (par exemple, C:\Scripts et D:\Scripts), des dossiers seront retournés de chacune de ces dossiers

lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFiles = loWMIService. ;
ExecQuery("Select * from CIM_DataFile where Path = '\\Scripts\\'")
For Each loFile in colFiles
?loFile.Name
Next

&&Énumère tous les fichiers sur un ordinateur. C'est principalement un script de démonstration; si réellement couru, il pourrait prendre une heure ou plus pour accomplir, selon le nombre de fichiers sur l'ordinateur. Selon le nombre de fichiers et sur la mémoire disponible, ce script peut échouer avant de finir.

lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFiles = loWMIService.ExecQuery ;
("Select * from CIM_Datafile")
For Each loFile in colFiles
?loFile.Name
Next

&& Renvoie une liste de tous les dossiers plus gros que 1.000.000 kb.

lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFiles = loWMIService. ;
ExecQuery("Select * from CIM_DataFile where FileSize > 1000000")
For Each loFile in colFiles
?loFile.Name + " -- " + loFile.FileSize
Next

&& Script de démonstration qui emploie le FileSystemObject pour énumérer les attributs d'un fichier. Le manuscrit doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFile = loFSO.GetFile("C:\FSO\ScriptLog.txt")
If loFile.Attributes= 0
?"No attributes set."
ENDIF
If loFile.Attributes = 1
?"Read-only."
ENDIF
If loFile.Attributes = 2
?"Hidden file."
ENDIF
If loFile.Attributes = 4
?"System file."
ENDIF
If loFile.Attributes = 32
?"Archive bit set."
ENDIF
If loFile.Attributes = 64
?"Link or shortcut."
ENDIF
If loFile.Attributes = 2048
?"Compressed file."
ENDIF

&& Script de démonstration qui emploie le FileSystemObject pour énumérer les propriétés d'un fichier. Le manuscrit doit être couru sur l'ordinateur local.

loFSO = Createobject("Scripting.FileSystemObject")
loFile = loFSO.Getfile("c:\windows\system32\scrrun.dll")
?"Date created: " + transform(loFile.DateCreated)
?"Date last accessed: " + transform(loFile.DateLastAccessed)
?"Date last modified: " + transform(loFile.DateLastModified)
?"Drive: " + transform(loFile.Drive)
?"Name: " + transform(loFile.Name)
?"Parent folder: " + transform(loFile.ParentFolder)
?"Path: " + transform(loFile.Path)
?"Short name: " + transform(loFile.ShortName)
?"Short path: " + transform(loFile.ShortPath)
?"Size: " + transform(loFile.Size)
?"Type: " + transform(loFile.Type)

&& Script de démonstration qui vérifie pour voir si un fichier est inaltérable (read-only) et, s'il n'est pas, le marque comme inaltérable. Le script doit être couru sur l'ordinateur local.

loFSO = Createobject("Scripting.FileSystemObject")
loFile = loFSO.Getfile("C:\FSO\scriptlog.txt")
If loFile.Attributes = 32
  loFile.Attributes = 64
Endif

&& Script de démonstration qui emploie le FileSystermObject pour déplacer un fichier d'un endroit à l'autre. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.MoveFile( "C:\FSO\ScriptLog.log" , "D:\Archive")

&& Script de démonstration qui emploie le FileSystemObject pour déplacer tous les fichiers '.txt' d'un endroit à un autre. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.MoveFile( "C:\FSO\*.txt" , "D:\Archive\")

&& Script de démonstration qui emploie le FileSystemObject pour renvoyer l'information d'un fichier, y compris le nom de fichier, l'extension, le chemin complet de fichier, etc... Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFile = loFSO.GetFile("c:\scripts\software.txt")
?"Absolute path: " + loFSO.GetAbsolutePathName(loFile)
?"Parent folder: " + loFSO.GetParentFolderName(loFile)
?"File name: " + loFSO.GetFileName(loFile)
?"Base name: " + loFSO.GetBaseName(loFile)
?"Extension name: " + loFSO.GetExtensionName(loFile)

&& Script de démonstration qui emploie le FileSystemObject pour renommer un fichier. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.MoveFile ("C:\FSO\ScriptLog.txt" , "C:\FSO\BackupLog.txt")

&& Renomme le fichier C:\Scripts\Toggle_Service.vbs à C:\Scripts\Toggle_Service.old.

lcComputer = "."
loWMIService = GetObject("winmgmts:" + "!\\" + lcComputer + "\root\cimv2")
colFiles = loWMIService.ExecQuery ;
("Select * from Cim_Datafile where Name = " ;
"'c:\\scripts\\toggle_service.vbs'")
For Each loFile in colFiles
errResult = loFile.Rename("c:\scripts\toggle_service.old")
?errResult
Next

&& Énumère les propriétés pour le fichier C:\Scripts\software.txt.

lcComputer = "."
loWMIService = Getobject("winmgmts:" ;
  + "{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFiles = loWMIService.ExecQuery ;
  ("Select * from CIM_Datafile Where name = 'c:\\Scripts\\software.txt'")
For Each loFile In colFiles
  ?"Access mask: " + Transform(loFile.AccessMask)
  ?"Archive: " + Transform(loFile.Archive)
  ?"Compressed: " + Transform(loFile.Compressed)
  ?"Compression method: " + Transform(loFile.CompressionMethod)
  ?"Creation date: " + Transform(loFile.CreationDate)
  ?"Computer system name: " + Transform(loFile.CSName)
  ?"Drive: " + Transform(loFile.Drive)
  ?"8.3 file name: " + Transform(loFile.EightDotThreeFileName)
  ?"Encrypted: " + Transform(loFile.Encrypted)
  ?"Encryption method: " + Transform(loFile.EncryptionMethod)
  ?"Extension: " + Transform(loFile.Extension)
  ?"File name: " + Transform(loFile.FileName)
  ?"File size: " + Transform(loFile.FileSize)
  ?"File type: " + Transform(loFile.FileType)
  ?"File system name: " + Transform(loFile.FSName)
  ?"Hidden: " + Transform(loFile.Hidden)
  ?"Last accessed: " + Transform(loFile.LastAccessed)
  ?"Last modified: " + Transform(loFile.LastModified)
  ?"Manufacturer: " + Transform(loFile.Manufacturer)
  ?"Name: " + Transform(loFile.Name)
  ?"Path: " + Transform(loFile.Path)
  ?"Readable: " + Transform(loFile.Readable)
  ?"System: " + Transform(loFile.System)
  ?"Version: " + Transform(loFile.Version)
  ?"Writeable: " + Transform(loFile.Writeable)
Next

&& Script de démonstration qui emploie le FileSystemObject pour rechercher la version de fichier pour un fichier de dll. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
?loFSO.GetFileVersion("c:\windows\system32\scrrun.dll")

&& Énumère tous les fichiers dans un dossier.

#define FILE_NAME  0
loShell = CreateObject ("Shell.Application")
loFolder = loShell.Namespace ("C:\Scripts")
For Each lcFileName in loFolder.Items
?"File name: " + loFolder.GetDetailsOf ;
(lcFileName, FILE_NAME)
Next

&& Script de démonstration qui emploie le FileSystemObject pour vérifier qu'un fichier existe. Le script doit être couru sur l'ordinateur local.

On Error Do nofile
loFSO = Createobject("Scripting.FileSystemObject")
If loFSO.FileExists("C:\FSO\ScriptLog.txt")
  loFolder = loFSO.Getfile("C:\FSO\ScriptLog1.txt")
Else
  ?"File does not exist."
Endif
Procedure nofile
?"File does not exist."
Endproc

&& Le script de démonstration qui emploie le FileSystemObject pour vérifier si un dossier est cachée et, si elle n'est pas, le cacher. Le script doit être couru sur l'ordinateur local.

loFSO = Createobject("Scripting.FileSystemObject")
loFolder = loFSO.GetFolder("C:\FSO")
If loFolder.Attributes =  16
  loFolder.Attributes = 34
Endif

&& Script de démonstration qui emploie le FileSystemObject pour copier une dossier à un nouvel endroit. Le script doit être couru sur l'ordinateur local.

#define OverWriteFiles  .t.
loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFolder ("C:\Scripts" , "C:\FSO" , OverWriteFiles)

&& Emploie 'Shell Object' pour copier le dossier C:\Scripts à D:\Archives. Montre le dialogue copiant de progrès de fichiers pendant que le dossier est copié.

#DEFINE ParentFolder 'C:\Scripts'
loShell = CreateObject("Shell.Application")
loFolder = loShell.NameSpace(ParentFolder)
loFolder.CopyHere( "D:\Archices")

&& Emploie WMI pour copier le dossier C:\Scripts à D:\Archives.

lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFolders = loWMIService.ExecQuery( ;
"Select * from Win32_Directory where Name = 'c:\\Scripts'")
For Each loFolder in colFolders
= loFolder.Copy("D:\Archive")
Next

&& Script de démonstration qui emploie le FileSystemObject pour créer un dossier. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFolder = loFSO.CreateFolder("C:\FSO")

&& Script de démonstration qui emploie le FileSystemObject pour supprimer un dossier. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.DeleteFolder("C:\FSO")

&& Script de démonstration qui emploie le FileSystemObject pour supprimer plusieurs dossiers. Le script doit être couru sur l'ordinateur local.

lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFolders = loWMIService.ExecQuery ;
("Select * from Win32_Directory where Name = 'c:\\Scripts'")
For Each loFolder in colFolders
= loFolder.Delete
Next

&& Renvoie une liste de toutes les dossiers sur un ordinateur. Ceci peut prendre 15 minutes ou plus pour accomplir, selon le nombre de dossiers sur l'ordinateur.

lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFolders = loWMIService.ExecQuery("Select * from Win32_Directory")
For Each loFolder in colFolders
?loFolder.Name
Next

&& Renvoie une liste de toutes les dossiers cachés sur un ordinateur.

lcComputer = "."
loWMIService = GetObject("winmgmts:" ;
"{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colFiles = loWMIService.ExecQuery ;
("Select * from Win32_Directory Where Hidden = .t.")
For Each loFile in colFiles
?loFile.Name
Next

&& Script de démonstration qui emploie le FileSystemObject pour énumérer les attributs d'un dossier. Le script doit être couru sur l'ordinateur local.

loFSO = CreateObject("Scripting.FileSystemObject")
loFolder = loFSO.GetFolder("C:\FSO")
If loFolder.Attributes AND 2
?"Hidden folder."
ENDIF
If loFolder.Attributes AND 4
?"System folder."
ENDIF
If loFolder.Attributes AND 16
?"Folder."
ENDIF
If loFolder.Attributes AND 32
?"Archive bit set."
ENDIF
If loFolder.Attributes AND 2048
?"Compressed folder."
ENDIF

&& Script de démonstration qui emploie le FileSystemObject pour énumérer les propriétés d'un dossier. Le script doit être couru sur l'ordinateur local.

CLEAR
loFSO = CreateObject("Scripting.FileSystemObject")
loFolder = loFSO.GetFolder("C:\Scripts")
?"Date created: " + TRANSFORM(loFolder.DateCreated)
?"Date last accessed: " + TRANSFORM(loFolder.DateLastAccessed)
?"Date last modified: " + TRANSFORM(loFolder.DateLastModified)
?"Is root folder: " + TRANSF(loFolder.IsRootFolder)
?"Name: " + loFolder.Name
?"Path: " + loFolder.Path
?"Short name: " + loFolder.ShortName
?"Short path: " + loFolder.ShortPath
?"Size: " + TRANSF(loFolder.Size)
?"Type: " + loFolder.Type

&& Utliser Shell Application et WMI pour choisir un dossier et déterminer si il est en lecture-seule ou non.

#define WINDOW_HANDLE  0
#define NO_OPTIONS  0
loShell = CreateObject("Shell.Application")
loFolder = loShell.BrowseForFolder ;
(WINDOW_HANDLE, "Select a folder:", NO_OPTIONS, "C:\Scripts")
loFolderItem = loFolder.Self
loPath = loFolderItem.Path
loPath = strtran(loPath, "\""\\",-1, -1, 3)
lcComputer = "."
loWMIService = GetObject("winmgmts:" + "!\\" + lcComputer + "\root\cimv2")
colFiles = loWMIService.ExecQuery ;
("Select * from Win32_Directory where name = '" + loPath + "'")
For Each loFile in colFiles
  MESSAGEBOX("Dossier lisable ?: " +iif(lofile.readable=.t.,"Oui","Non"))
Next

&& Vérifier l'existence d'un dossier avec FileSystemObject.

loFSO = Createobject("Scripting.FileSystemObject")
If loFSO.FolderExists("C:\FSO")
  loFolder = loFSO.GetFolder("C:\FSO")
Else
  ?"Dossier n'existe pas.”
Endif

&& Mettre un dossier en partage avec un maximum de 10 connection. À Noter que un code d'erreur 0 signifie que la fonction a réussi.

#Define FILE_SHARE 0
#Define MAXIMUM_CONNECTIONS 10
lcComputer = "
."
loWMIService = Getobject("
winmgmts:" ;
+ "
{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
loNewShare = loWMIService.Get("
Win32_Share")
errReturn = loNewShare.Create ;
("
C:\scripts", "FinancePartage", FILE_SHARE, ;
MAXIMUM_CONNECTIONS, "
Dossier le group de Finance.")
If errReturn # 0
Messagebox("
Impossible de partager le dossier."
Endif

&& Changer le commentaire d'un dossier partagé. Exemple: le partage ci-haut.

lcComputer = "
."
loWMIService = GetObject("
winmgmts:" ;
+ "
{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colShares = loWMIService.ExecQuery ;
("
Select * from Win32_Share Where Name = 'FinancePartage'")
For Each loShare in colShares
errReturn = loShare.SetShareInfo(50, ;
"
Partage publique pour les ressources humaines.")
Next



&& Supprimmer le partage d'un dossier. Ex: Enlever le partage ci-haut.

lcComputer = "
."
loWMIService = GetObject("
winmgmts:" ;
+ "
{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colShares = loWMIService.ExecQuery ;
("
Select * from Win32_Share Where Name = 'FinancePartage'")
For Each loShare in colShares
loShare.Delete
Next

&& Énumérer les dossiers partagés sur un ordinateur.

lcComputer = "
."
loWMIService = GetObject("
winmgmts:" ;
+ "
{impersonationLevel=impersonate}!\\" + lcComputer + "\root\cimv2")
colShares = loWMIService.ExecQuery("
Select * from Win32_Share")
For each loShare in colShares
?"
AllowMaximum: " + chr(9) + transf(loShare.AllowMaximum)
?"
Caption" + chr(9) + loShare.Caption
?"
MaximumAllowed: " + chr(9) + loShare.MaximumAllowed
?"
Name" + chr(9) + loShare.Name
?"
Path" + chr(9) + loShare.Path
Next



Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2019.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3