Hello,

When i'm trying to use root folder (like "c:") as an object (like Ofolder =
fso.GetFolder("C:"), I can't access to its properties like .Files or
.SubFolders. How can I do?

My second problem is when I'm launching my script which is on C:, and it
does a GetFolder command on "c:", then the Path of the object is not "c:" but
the path of the script????
Hereafter is an example of my script:
Option explicit

'*********************************************************************************************************
'* Sous fonctions et procédures
'*********************************************************************************************************

'*******************************************************************************************
'* Sous fonction SmartCopy
'*
'* Copie les répertoires et sous-répertoires
'* avec confirmation utilisateur. Ouvre une fenêtre IE (fichier
SmartCopy.htm).
'*
'* IN
'* Source: String sur le dossier source, sans le / à la fin.
'* Destination: String sur le dossier destination, sans le / à la
fin.
'* recursif: Entier permettant de savoir si on a un appel recursif
ou non. Doit
'* valoir 1 lors du premier appel.
'* IE: Objet pointant sur la fenêtre de l'internet exploreur pour la
récursivité.
'* Doit valoir 0 lors du premier appel.
'* Nombre_max: Entier indiquant le nombre max de fichiers à copier.
Utilise pour la récursivité.
'* Doit valoir 0 lors du premier appel.
'* Nombre_traite: Entier indiquant le nombre de fichiers déjà
copiés. Utilie pour la récursivité.
'* Doit valoir 0 lors du premier appel.
'* IN/OUT
'* Liste_des_fichiers_copies: String contenant la liste des fichiers
copies. Elle peut
'* ne pas être vide lors du premier
appel.
'* Liste_des_fichiers_non_copies: String contenant la liste des
fichiers non copiés.
'* Elle peut ne pas être vide lors du
premier appel.
'*******************************************************************************************
Sub SmartCopy(Source, Destination, _
Liste_des_fichiers_copies,
Liste_des_fichiers_non_copies, recursif, IE, Nombre_max,
Nombre_traite)

'***** Déclarations des variables
Dim SousRep
Dim FicSrc
Dim FicDest
Dim Reponse
Dim Copy_apres_check_date
Dim fso, Chemin
Dim Taille, oDrive

'***** Début du code
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
WshShell.Popup Source & " " & fso.GetFolder(Source).Path


If fso.GetFolder(Source).IsRootFolder Then
Set oDrive = fso.GetFolder(Source).Drive
Taille = oDrive.TotalSize - oDrive.FreeSpace
Else
Taille = fso.GetFolder(Source).Size
End If
Taille = FormatNumber((Taille/(1024*1024)),2)

'***** Calcule le nombre de fichier à copier *******'

Nombre_max = 0
Compte_fichier fso.GetFolder(Source), Nombre_max
Nombre_traite = 0





End Sub


'*******************************************************************************************
'* Sous fonction Compte_fichiers
'*
'* Compte les fichiers d'un dossier.
'*
'* IN
'* Dossier: Objet pointant sur le dossier dont il doit compter les
fichiers.
'* IN/OUT
'* nombre: Entier indiquant le nombre de fichiers comptés. Doit être
initialisé à 0.
'*******************************************************************************************
Sub Compte_fichier(Dossier, nombre)

'***** Déclaration des variables
Dim fso

'***** Début du code
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

Dim SousRep
Dim Fichier

For Each Fichier In Dossier.Files
nombre = nombre + 1
Next

For Each SousRep In fso.GetFolder(Dossier).SubFolders
Compte_fichier SousRep , nombre
Next


End Sub


'*********************************************************************************************************
'*********************************************************************************************************
'*********************************************************************************************************
'* main
'*********************************************************************************************************
'*********************************************************************************************************
'*********************************************************************************************************
Dim WSHShell, fso, WshNet, IE

Set WSHShell = WScript.CreateObject("Wscript.Shell")
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
Set WshNet = Wscript.CreateObject("Wscript.Network")
Set IE = WScript.CreateObject("InternetExplorer.Application")

Dim Liste_des_fichiers_copies, Liste_des_fichiers_non_copies
Dim Chemin


'*******************************************************************************************
'* Début du code
'*******************************************************************************************



SmartCopy "C:" , "J:\Sauvegardes personnelles\Copie de E" , _
Liste_des_fichiers_copies,
Liste_des_fichiers_non_copies, 1, 0, 0, 0

RE: Problem when using root folder as object by urkec

urkec
Tue Apr 03 09:24:03 CDT 2007

You need a trailing backslash in the folder path:



set fso = CreateObject ("Scripting.FileSystemObject")

set folder = fso.GetFolder ("C:\")

WScript.Echo folder.Path

for each file in folder.Files
WScript.Echo file.Name
next

for each sf in folder.SubFolders
WScript.Echo sf.Name
next



--
urkec


"rmanal" wrote:

> Hello,
>
> When i'm trying to use root folder (like "c:") as an object (like Ofolder =
> fso.GetFolder("C:"), I can't access to its properties like .Files or
> .SubFolders. How can I do?
>
> My second problem is when I'm launching my script which is on C:, and it
> does a GetFolder command on "c:", then the Path of the object is not "c:" but
> the path of the script????
> Hereafter is an example of my script:
> Option explicit
>
> '*********************************************************************************************************
> '* Sous fonctions et procédures
> '*********************************************************************************************************
>
> '*******************************************************************************************
> '* Sous fonction SmartCopy
> '*
> '* Copie les répertoires et sous-répertoires
> '* avec confirmation utilisateur. Ouvre une fenêtre IE (fichier
> SmartCopy.htm).
> '*
> '* IN
> '* Source: String sur le dossier source, sans le / à la fin.
> '* Destination: String sur le dossier destination, sans le / à la
> fin.
> '* recursif: Entier permettant de savoir si on a un appel recursif
> ou non. Doit
> '* valoir 1 lors du premier appel.
> '* IE: Objet pointant sur la fenêtre de l'internet exploreur pour la
> récursivité.
> '* Doit valoir 0 lors du premier appel.
> '* Nombre_max: Entier indiquant le nombre max de fichiers à copier.
> Utilise pour la récursivité.
> '* Doit valoir 0 lors du premier appel.
> '* Nombre_traite: Entier indiquant le nombre de fichiers déjà
> copiés. Utilie pour la récursivité.
> '* Doit valoir 0 lors du premier appel.
> '* IN/OUT
> '* Liste_des_fichiers_copies: String contenant la liste des fichiers
> copies. Elle peut
> '* ne pas être vide lors du premier
> appel.
> '* Liste_des_fichiers_non_copies: String contenant la liste des
> fichiers non copiés.
> '* Elle peut ne pas être vide lors du
> premier appel.
> '*******************************************************************************************
> Sub SmartCopy(Source, Destination, _
> Liste_des_fichiers_copies,
> Liste_des_fichiers_non_copies, recursif, IE, Nombre_max,
> Nombre_traite)
>
> '***** Déclarations des variables
> Dim SousRep
> Dim FicSrc
> Dim FicDest
> Dim Reponse
> Dim Copy_apres_check_date
> Dim fso, Chemin
> Dim Taille, oDrive
>
> '***** Début du code
> Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
> WshShell.Popup Source & " " & fso.GetFolder(Source).Path
>
>
> If fso.GetFolder(Source).IsRootFolder Then
> Set oDrive = fso.GetFolder(Source).Drive
> Taille = oDrive.TotalSize - oDrive.FreeSpace
> Else
> Taille = fso.GetFolder(Source).Size
> End If
> Taille = FormatNumber((Taille/(1024*1024)),2)
>
> '***** Calcule le nombre de fichier à copier *******'
>
> Nombre_max = 0
> Compte_fichier fso.GetFolder(Source), Nombre_max
> Nombre_traite = 0
>
>
>
>
>
> End Sub
>
>
> '*******************************************************************************************
> '* Sous fonction Compte_fichiers
> '*
> '* Compte les fichiers d'un dossier.
> '*
> '* IN
> '* Dossier: Objet pointant sur le dossier dont il doit compter les
> fichiers.
> '* IN/OUT
> '* nombre: Entier indiquant le nombre de fichiers comptés. Doit être
> initialisé à 0.
> '*******************************************************************************************
> Sub Compte_fichier(Dossier, nombre)
>
> '***** Déclaration des variables
> Dim fso
>
> '***** Début du code
> Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
>
> Dim SousRep
> Dim Fichier
>
> For Each Fichier In Dossier.Files
> nombre = nombre + 1
> Next
>
> For Each SousRep In fso.GetFolder(Dossier).SubFolders
> Compte_fichier SousRep , nombre
> Next
>
>
> End Sub
>
>
> '*********************************************************************************************************
> '*********************************************************************************************************
> '*********************************************************************************************************
> '* main
> '*********************************************************************************************************
> '*********************************************************************************************************
> '*********************************************************************************************************
> Dim WSHShell, fso, WshNet, IE
>
> Set WSHShell = WScript.CreateObject("Wscript.Shell")
> Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
> Set WshNet = Wscript.CreateObject("Wscript.Network")
> Set IE = WScript.CreateObject("InternetExplorer.Application")
>
> Dim Liste_des_fichiers_copies, Liste_des_fichiers_non_copies
> Dim Chemin
>
>
> '*******************************************************************************************
> '* Début du code
> '*******************************************************************************************
>
>
>
> SmartCopy "C:" , "J:\Sauvegardes personnelles\Copie de E" , _
> Liste_des_fichiers_copies,
> Liste_des_fichiers_non_copies, 1, 0, 0, 0
>
>

RE: Problem when using root folder as object by rmanal

rmanal
Wed Apr 04 02:06:02 CDT 2007

OK, thank you it's working better, but i have still problem with my final
script:
try this
set fso = CreateObject ("Scripting.FileSystemObject")
set folder = fso.GetFolder ("E:\")
WScript.Echo folder.Path
for each file in folder.Files
WScript.Echo file.Name
next

for each sf in folder.SubFolders
WScript.Echo sf.Name
for each file in sf.Files
WScript.Echo file.Name
next
next

How to do to use Size property on root folder?
How to do with "Volume System Information" folder?

Thank you

RE: Problem when using root folder as object by urkec

urkec
Wed Apr 04 10:34:02 CDT 2007

> How to do to use Size property on root folder?
> How to do with "Volume System Information" folder?

I think you can get around "System Volume Information" with On Error Resume
Next statement

on error resume next

root = "C:\"
set fso = CreateObject _
("Scripting.FileSystemObject")

set drive = fso.GetDrive (root)
set folder = fso.GetFolder (root)

WScript.Echo drive.TotalSize
WScript.Echo drive.FreeSpace
WScript.Echo

WScript.Echo folder.Path
for each file in folder.Files
WScript.Echo file.Name
next

for each sf in folder.SubFolders
WScript.Echo sf.Name
for each file in sf.Files
if err.number <> 0 then
WScript.Echo
WScript.Echo sf.Name & vbTab & err.number _
& vbTab & err.Description
err.Clear
WScript.Echo
end if
WScript.Echo file.Name
next
next

--
urkec