Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Trouver le chemin

28 réponses
Avatar
Alain Lebayle
Bonjour,
Je cherche à contourner un problème, je souhaite atteindre un fichier
toto, qui se trouve en C:\Documents and Settings\Nom d'utilisateur\
Application Data\toto, le problème est que le nom d'utilisateur est
forcément différend d'un poste à l'autre.
Comment faire afin de contourner le pb ?
Je vous remercie
Alain

8 réponses

1 2 3
Avatar
michdenis
Ta question était :

A ) Comment faire pour extraire le nom de l'usager dans un vbscript?
Réponse : Tu insères la fonction "Environ()" dans le bas de ton script.
Et je t'ai mentionné comment trouver les 38 valeurs que pouvait
prendre "VarName" en utilisant une petite macro dans Excel.
'-------------------
Sub test()
For a = 1 to 38
Range("A" & A) = Environ(A)
Next
Exit sub
'-------------------
Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
Set wss = Nothing: set Env = Nothing
End Function
'-------------------

B - Tu voulais savoir comment faire pour retrouver le nom
d'un sous-répertoire si la fin du nom de ce sous-répertoire
est ".default" afin d'obtenir "ia02c5qy.default". Tu as la
fonction "Extraire(Temp)" qui fait ça. Il s'agit de passer
en paramètre le chemin du répertoire où se trouve ce
sous-répertoire.
'---------------------------------------
Function Extraire(Temp)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Temp)
For Each F In Rep.SubFolders
If InStr(1, F.Name, ".defaut",1) > 0 Then
Extraire = F.Name
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
Exit For
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Function
'---------------------------------------

C ) Tu voulais savoir comment arriver à supprimer des fichiers à
partir d'un certain critère que tu avais mal défini dans ta question
initiale. Je t'ai donné un exemple. Cette procédure supprime tous
les fichiers du chemin du répertoire passé en paramètre s'il s'est
écoulé plus de 3 mois.
'-------------------------------------------
Sub Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Repertoire)
For Each F In Rep.files
If DateDiff("m", F.DateLastAccessed, Now) > 3 then
F.delete
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Sub
'-------------------------------------------

Toutes ces fonctions et procédures ont été testées et sont fonctionnelles.
Il n'y a qu'à les inclure (copier-coller) dans le bas de ton script. Tu as le
droit de modifier ton approche dans ta problématique...mais mon aide
s'arrête ici. C'est un forum d'entraide...et l'objet principal est Excel et non
du VBScript.

P.S- Dans mon dernier message, le "End" du "End If" à la fin de cette section
"If MsgBox("Désirez...") de la procédure se retrouve à la fin de la ligne
"call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)End" plutôt
qu'en dessous comme ceci :
call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
End if
Avatar
Alain Lebayle
Bonsoir Michdenis,
Tout d'abord, je tiens à m'excuser pour le manque de précisions quant à
mes demamdes. Tu es un formidable contributeur, et tes interventions de
très grandes qualités, nous font tous réellement avancer et tu m'as très
souvent enlevé de sacrées épines du pied.

Néanmoins, je n'arrive pas à faire fonctionner ta procédure alors que
pourtant je fais un simple copier/coller, je passe un temps fou à
analyser et décortiquer les procédures...

Je n'arrive pas à intégrer une des variables que j'ai extrait d'Excel
comme userprofile par exemple.

Mais ce n'est pas grave ;-)

Je te souhaite une bonne soirée
Alain



michdenis a écrit :
Ta question était :

A ) Comment faire pour extraire le nom de l'usager dans un vbscript?
Réponse : Tu insères la fonction "Environ()" dans le bas de ton script.
Et je t'ai mentionné comment trouver les 38 valeurs que pouvait
prendre "VarName" en utilisant une petite macro dans Excel.
'-------------------
Sub test()
For a = 1 to 38
Range("A" & A) = Environ(A)
Next
Exit sub
'-------------------
Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
Set wss = Nothing: set Env = Nothing
End Function
'-------------------

B - Tu voulais savoir comment faire pour retrouver le nom
d'un sous-répertoire si la fin du nom de ce sous-répertoire
est ".default" afin d'obtenir "ia02c5qy.default". Tu as la
fonction "Extraire(Temp)" qui fait ça. Il s'agit de passer
en paramètre le chemin du répertoire où se trouve ce
sous-répertoire.
'---------------------------------------
Function Extraire(Temp)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Temp)
For Each F In Rep.SubFolders
If InStr(1, F.Name, ".defaut",1) > 0 Then
Extraire = F.Name
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
Exit For
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Function
'---------------------------------------

C ) Tu voulais savoir comment arriver à supprimer des fichiers à
partir d'un certain critère que tu avais mal défini dans ta question
initiale. Je t'ai donné un exemple. Cette procédure supprime tous
les fichiers du chemin du répertoire passé en paramètre s'il s'est
écoulé plus de 3 mois.
'-------------------------------------------
Sub Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Repertoire)
For Each F In Rep.files
If DateDiff("m", F.DateLastAccessed, Now) > 3 then
F.delete
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Sub
'-------------------------------------------

Toutes ces fonctions et procédures ont été testées et sont fonctionnelles.
Il n'y a qu'à les inclure (copier-coller) dans le bas de ton script. Tu as le
droit de modifier ton approche dans ta problématique...mais mon aide
s'arrête ici. C'est un forum d'entraide...et l'objet principal est Excel et non
du VBScript.

P.S- Dans mon dernier message, le "End" du "End If" à la fin de cette section
"If MsgBox("Désirez...") de la procédure se retrouve à la fin de la ligne
"call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)End" plutôt
qu'en dessous comme ceci :
call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
End if






Avatar
michdenis
Essaie de façon séquentielle en intégrant et testant des portions de code.
De cette manière, tu peux créer plusieurs petits fichiers vbs et tester séparément
leur fonctionnement.

Exemple : Pour extraire le nom de l'usager ou le chemin du profil local de l'usager
copie ce bout de code dans un fichier NotePad et tu le sauvegardes avec l'extension .vbs.

USERNAME et LOCALAPPDATA ne sont que 2 variables parmi 38 que tu peux utiliser
pour obtenir des informations diverses. Je n'ai déjà expliqué comment faire pour les
afficher dans un fichier Excel.

Par la suite pour créer un chemin particulier, il s'agit de concaténer les bouts du chemin
qui sont contenus dans des variables. Il faut utiliser le symbole &

Tu fais de même pour les autres sections de ton vbscript. Regarde plus bas,
tu peux même faire tout tester d'abord dans Excel.

'----------------------------------------------
Dim wss, wsh
Set wsh = CreateObject( "WScript.Shell" )

'Trouve le nom du profil de l'usager
usager = Environ("USERNAME")
Msgbox usager

'Trouve le chemin du profil local de l'usager
Msgbox Environ("LOCALAPPDATA")

Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
End Function
'----------------------------------------------

Au besoin, tu peux même tester le code dans un module d'Excel
La seule chose que j'ai ajouter c'est : Sub Teste() et End Sub

Sub teste()
Dim wss, wsh
Set wsh = CreateObject("WScript.Shell")
'Trouve le nom du profil de l'usager
usager = Environ("USERNAME")
MsgBox usager
'Trouve le chemin du profil local de l'usager
MsgBox Environ("LOCALAPPDATA")

End Sub
'-------------------------------------------
Function Environ(VarName)
Dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
End Function
'-------------------------------------------



"Alain Lebayle" a écrit dans le message de groupe de
discussion :
Bonsoir Michdenis,
Tout d'abord, je tiens à m'excuser pour le manque de précisions quant à
mes demamdes. Tu es un formidable contributeur, et tes interventions de
très grandes qualités, nous font tous réellement avancer et tu m'as très
souvent enlevé de sacrées épines du pied.

Néanmoins, je n'arrive pas à faire fonctionner ta procédure alors que
pourtant je fais un simple copier/coller, je passe un temps fou à
analyser et décortiquer les procédures...

Je n'arrive pas à intégrer une des variables que j'ai extrait d'Excel
comme userprofile par exemple.

Mais ce n'est pas grave ;-)

Je te souhaite une bonne soirée
Alain



michdenis a écrit :
Ta question était :

A ) Comment faire pour extraire le nom de l'usager dans un vbscript?
Réponse : Tu insères la fonction "Environ()" dans le bas de ton script.
Et je t'ai mentionné comment trouver les 38 valeurs que pouvait
prendre "VarName" en utilisant une petite macro dans Excel.
'-------------------
Sub test()
For a = 1 to 38
Range("A" & A) = Environ(A)
Next
Exit sub
'-------------------
Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
Set wss = Nothing: set Env = Nothing
End Function
'-------------------

B - Tu voulais savoir comment faire pour retrouver le nom
d'un sous-répertoire si la fin du nom de ce sous-répertoire
est ".default" afin d'obtenir "ia02c5qy.default". Tu as la
fonction "Extraire(Temp)" qui fait ça. Il s'agit de passer
en paramètre le chemin du répertoire où se trouve ce
sous-répertoire.
'---------------------------------------
Function Extraire(Temp)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Temp)
For Each F In Rep.SubFolders
If InStr(1, F.Name, ".defaut",1) > 0 Then
Extraire = F.Name
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
Exit For
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Function
'---------------------------------------

C ) Tu voulais savoir comment arriver à supprimer des fichiers à
partir d'un certain critère que tu avais mal défini dans ta question
initiale. Je t'ai donné un exemple. Cette procédure supprime tous
les fichiers du chemin du répertoire passé en paramètre s'il s'est
écoulé plus de 3 mois.
'-------------------------------------------
Sub Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Repertoire)
For Each F In Rep.files
If DateDiff("m", F.DateLastAccessed, Now) > 3 then
F.delete
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Sub
'-------------------------------------------

Toutes ces fonctions et procédures ont été testées et sont fonctionnelles.
Il n'y a qu'à les inclure (copier-coller) dans le bas de ton script. Tu as le
droit de modifier ton approche dans ta problématique...mais mon aide
s'arrête ici. C'est un forum d'entraide...et l'objet principal est Excel et non
du VBScript.

P.S- Dans mon dernier message, le "End" du "End If" à la fin de cette section
"If MsgBox("Désirez...") de la procédure se retrouve à la fin de la ligne
"call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)End" plutôt
qu'en dessous comme ceci :
call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
End if






Avatar
Alain Lebayle
Bonjour Michdenis,
Tu ne crois pas si bien dire.
Je teste les procédures pas à pas afin de comprendre leur mécanisme.
Mais dans ce cas, j'ai bien le nom de "l'usager", mais le 2ème msgbox
reste vide pour localappdata.
Mais de toutes les façons, tu m'as donné la solution, et les différents
moyens d'y arriver, je te remercie donc, notamment pour la proc :

Sub test()
For a = 1 to 38
Range("A" & A) = Environ(A)
Next
Exit sub

Mais dans le cas, si je veux récupérer le chemin du bureau sur lequel je
me trouve, je ne trouve pas la bonne syntaxe.

J'ai donc beaucoup appris et vous remercie tous pour votre aide
précieuse même si je n'ai pas très bien compris toutes les subtilités de
celles-ci ;-)

Très bonne journée
Alain

michdenis a écrit :
Essaie de façon séquentielle en intégrant et testant des portions de code.
De cette manière, tu peux créer plusieurs petits fichiers vbs et tester séparément
leur fonctionnement.

Exemple : Pour extraire le nom de l'usager ou le chemin du profil local de l'usager
copie ce bout de code dans un fichier NotePad et tu le sauvegardes avec l'extension .vbs.

USERNAME et LOCALAPPDATA ne sont que 2 variables parmi 38 que tu peux utiliser
pour obtenir des informations diverses. Je n'ai déjà expliqué comment faire pour les
afficher dans un fichier Excel.

Par la suite pour créer un chemin particulier, il s'agit de concaténer les bouts du chemin
qui sont contenus dans des variables. Il faut utiliser le symbole &

Tu fais de même pour les autres sections de ton vbscript. Regarde plus bas,
tu peux même faire tout tester d'abord dans Excel.

'----------------------------------------------
Dim wss, wsh
Set wsh = CreateObject( "WScript.Shell" )

'Trouve le nom du profil de l'usager
usager = Environ("USERNAME")
Msgbox usager

'Trouve le chemin du profil local de l'usager
Msgbox Environ("LOCALAPPDATA")

Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
End Function
'----------------------------------------------

Au besoin, tu peux même tester le code dans un module d'Excel
La seule chose que j'ai ajouter c'est : Sub Teste() et End Sub

Sub teste()
Dim wss, wsh
Set wsh = CreateObject("WScript.Shell")
'Trouve le nom du profil de l'usager
usager = Environ("USERNAME")
MsgBox usager
'Trouve le chemin du profil local de l'usager
MsgBox Environ("LOCALAPPDATA")

End Sub
'-------------------------------------------
Function Environ(VarName)
Dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
End Function
'-------------------------------------------



"Alain Lebayle" a écrit dans le message de groupe de
discussion :
Bonsoir Michdenis,
Tout d'abord, je tiens à m'excuser pour le manque de précisions quant à
mes demamdes. Tu es un formidable contributeur, et tes interventions de
très grandes qualités, nous font tous réellement avancer et tu m'as très
souvent enlevé de sacrées épines du pied.

Néanmoins, je n'arrive pas à faire fonctionner ta procédure alors que
pourtant je fais un simple copier/coller, je passe un temps fou à
analyser et décortiquer les procédures...

Je n'arrive pas à intégrer une des variables que j'ai extrait d'Excel
comme userprofile par exemple.

Mais ce n'est pas grave ;-)

Je te souhaite une bonne soirée
Alain



michdenis a écrit :
Ta question était :

A ) Comment faire pour extraire le nom de l'usager dans un vbscript?
Réponse : Tu insères la fonction "Environ()" dans le bas de ton script.
Et je t'ai mentionné comment trouver les 38 valeurs que pouvait
prendre "VarName" en utilisant une petite macro dans Excel.
'-------------------
Sub test()
For a = 1 to 38
Range("A" & A) = Environ(A)
Next
Exit sub
'-------------------
Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
Set wss = Nothing: set Env = Nothing
End Function
'-------------------

B - Tu voulais savoir comment faire pour retrouver le nom
d'un sous-répertoire si la fin du nom de ce sous-répertoire
est ".default" afin d'obtenir "ia02c5qy.default". Tu as la
fonction "Extraire(Temp)" qui fait ça. Il s'agit de passer
en paramètre le chemin du répertoire où se trouve ce
sous-répertoire.
'---------------------------------------
Function Extraire(Temp)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Temp)
For Each F In Rep.SubFolders
If InStr(1, F.Name, ".defaut",1) > 0 Then
Extraire = F.Name
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
Exit For
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Function
'---------------------------------------

C ) Tu voulais savoir comment arriver à supprimer des fichiers à
partir d'un certain critère que tu avais mal défini dans ta question
initiale. Je t'ai donné un exemple. Cette procédure supprime tous
les fichiers du chemin du répertoire passé en paramètre s'il s'est
écoulé plus de 3 mois.
'-------------------------------------------
Sub Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Repertoire)
For Each F In Rep.files
If DateDiff("m", F.DateLastAccessed, Now) > 3 then
F.delete
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Sub
'-------------------------------------------

Toutes ces fonctions et procédures ont été testées et sont fonctionnelles.
Il n'y a qu'à les inclure (copier-coller) dans le bas de ton script. Tu as le
droit de modifier ton approche dans ta problématique...mais mon aide
s'arrête ici. C'est un forum d'entraide...et l'objet principal est Excel et non
du VBScript.

P.S- Dans mon dernier message, le "End" du "End If" à la fin de cette section
"If MsgBox("Désirez...") de la procédure se retrouve à la fin de la ligne
"call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)End" plutôt
qu'en dessous comme ceci :
call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
End if






Avatar
Jacques93
Petite précision. De mémoire LocalAppdata est apparu avec Vista, si tu
es sous XP, il est normal qu'elle soit vide : elle n'existe pas.

Qu'entend tu par 'le chemin du bureau' ? ;-)

Pour le reste, je laisse la main à michdenis :-)

Alain Lebayle a écrit :
Bonjour Michdenis,
Tu ne crois pas si bien dire.
Je teste les procédures pas à pas afin de comprendre leur mécanisme.
Mais dans ce cas, j'ai bien le nom de "l'usager", mais le 2ème msgbox
reste vide pour localappdata.
Mais de toutes les façons, tu m'as donné la solution, et les différents
moyens d'y arriver, je te remercie donc, notamment pour la proc :

Sub test()
For a = 1 to 38
Range("A" & A) = Environ(A)
Next
Exit sub

Mais dans le cas, si je veux récupérer le chemin du bureau sur lequel je
me trouve, je ne trouve pas la bonne syntaxe.

J'ai donc beaucoup appris et vous remercie tous pour votre aide
précieuse même si je n'ai pas très bien compris toutes les subtilités de
celles-ci ;-)

Très bonne journée
Alain

michdenis a écrit :
Essaie de façon séquentielle en intégrant et testant des portions de
code.
De cette manière, tu peux créer plusieurs petits fichiers vbs et
tester séparément
leur fonctionnement.

Exemple : Pour extraire le nom de l'usager ou le chemin du profil
local de l'usager
copie ce bout de code dans un fichier NotePad et tu le sauvegardes
avec l'extension .vbs.

USERNAME et LOCALAPPDATA ne sont que 2 variables parmi 38 que tu peux
utiliser
pour obtenir des informations diverses. Je n'ai déjà expliqué comment
faire pour les
afficher dans un fichier Excel.

Par la suite pour créer un chemin particulier, il s'agit de concaténer
les bouts du chemin
qui sont contenus dans des variables. Il faut utiliser le symbole &

Tu fais de même pour les autres sections de ton vbscript. Regarde plus
bas,
tu peux même faire tout tester d'abord dans Excel.

'----------------------------------------------
Dim wss, wsh
Set wsh = CreateObject( "WScript.Shell" )

'Trouve le nom du profil de l'usager
usager = Environ("USERNAME")
Msgbox usager

'Trouve le chemin du profil local de l'usager
Msgbox Environ("LOCALAPPDATA")

Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
End Function
'----------------------------------------------

Au besoin, tu peux même tester le code dans un module d'Excel
La seule chose que j'ai ajouter c'est : Sub Teste() et End Sub

Sub teste()
Dim wss, wsh
Set wsh = CreateObject("WScript.Shell")
'Trouve le nom du profil de l'usager
usager = Environ("USERNAME")
MsgBox usager
'Trouve le chemin du profil local de l'usager
MsgBox Environ("LOCALAPPDATA")

End Sub
'-------------------------------------------
Function Environ(VarName)
Dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
End Function
'-------------------------------------------



"Alain Lebayle" a écrit dans le
message de groupe de discussion :

Bonsoir Michdenis,
Tout d'abord, je tiens à m'excuser pour le manque de précisions quant à
mes demamdes. Tu es un formidable contributeur, et tes interventions de
très grandes qualités, nous font tous réellement avancer et tu m'as très
souvent enlevé de sacrées épines du pied.

Néanmoins, je n'arrive pas à faire fonctionner ta procédure alors que
pourtant je fais un simple copier/coller, je passe un temps fou à
analyser et décortiquer les procédures...

Je n'arrive pas à intégrer une des variables que j'ai extrait d'Excel
comme userprofile par exemple.

Mais ce n'est pas grave ;-)

Je te souhaite une bonne soirée
Alain



michdenis a écrit :
Ta question était :

A ) Comment faire pour extraire le nom de l'usager dans un vbscript?
Réponse : Tu insères la fonction "Environ()" dans le bas de ton
script.
Et je t'ai mentionné comment trouver les 38 valeurs que pouvait
prendre "VarName" en utilisant une petite macro dans Excel.
'-------------------
Sub test()
For a = 1 to 38
Range("A" & A) = Environ(A)
Next
Exit sub
'-------------------
Function Environ(VarName)
dim wss, env
Set wss = CreateObject("WScript.Shell")
Set env = wss.environment("process")
Environ = env(VarName)
If Environ = "" Then
Set env = wss.environment("system")
Environ = env(VarName)
End If
Set wss = Nothing: set Env = Nothing
End Function
'-------------------

B - Tu voulais savoir comment faire pour retrouver le nom
d'un sous-répertoire si la fin du nom de ce sous-répertoire
est ".default" afin d'obtenir "ia02c5qy.default". Tu as la
fonction "Extraire(Temp)" qui fait ça. Il s'agit de passer
en paramètre le chemin du répertoire où se trouve ce
sous-répertoire.
'---------------------------------------
Function Extraire(Temp)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Temp)
For Each F In Rep.SubFolders
If InStr(1, F.Name, ".defaut",1) > 0 Then
Extraire = F.Name
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
Exit For
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Function
'---------------------------------------

C ) Tu voulais savoir comment arriver à supprimer des fichiers à
partir d'un certain critère que tu avais mal défini dans ta
question
initiale. Je t'ai donné un exemple. Cette procédure supprime tous
les fichiers du chemin du répertoire passé en paramètre s'il s'est
écoulé plus de 3 mois.
'------------------------------------------- Sub
Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Rep = objFSO.GetFolder(Repertoire)
For Each F In Rep.files
If DateDiff("m", F.DateLastAccessed, Now) > 3 then
F.delete
End If
Next
Set objFSO = Nothing: Set Rep = Nothing: Set F = Nothing
End Sub
'-------------------------------------------
Toutes ces fonctions et procédures ont été testées et sont
fonctionnelles.
Il n'y a qu'à les inclure (copier-coller) dans le bas de ton script.
Tu as le
droit de modifier ton approche dans ta problématique...mais mon aide
s'arrête ici. C'est un forum d'entraide...et l'objet principal est
Excel et non
du VBScript.

P.S- Dans mon dernier message, le "End" du "End If" à la fin de cette
section
"If MsgBox("Désirez...") de la procédure se retrouve à la fin
de la ligne
"call
Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)End" plutôt
qu'en dessous comme ceci :
call Supprimer_Fichier_Plus_Vieux_Trois_Mois(Repertoire)
End if














--

Cordialement,

Jacques.
Avatar
michdenis
| si je veux récupérer le chemin du bureau sur lequel je
| me trouve, je ne trouve pas la bonne syntaxe.

Dans un fichier VBS ou En VBA, tu peux utiliser ce code.
Dans ton fichier vbs, tu as déjà un objet wsh, Nul besoin
de récréer l'objet une deuxième fois.

Set wsh = CreateObject( "WScript.Shell" )
Bureau = wsh.SpecialFolders("Desktop")
Msgbox Bureau

Set wsh = CreateObject( "WScript.Shell" )
Cette ligne est utilisée pour créer une instance de la
bibliothèque "Scripting".

Pour voir tous les objets que contient cette bibliothèque,
Ouvre la fenêtre de l'éditeur de code VBA dans Excel,
Barre des menus / outils / Références / et tu coches l'item
suivant : "Microsoft Scripting Runtime"

Maintenant, dans l'explorateur d'objets que tu peux afficher
avec le raccourci clavier F2, ouvre la liste déroulante du haut
de la fenêtre "toutes les bibliothèques", sélectionne "Scripting"
et dans le bas de la fenêtre, section de gauche, tu as tous les
objets que tu peux utiliser avec l'objet WSH que tu as créé avec
la ligne de code Set wsh = CreateObject( "WScript.Shell" ).
Si tu cliques sur un de ces objets (section de gauche), tu obtiens
dans la section de droite, toutes les méthodes ou propriétés qui
sont propres à cet objet. Les objets sont différents, mais les principes
de programmation sont les mêmes que si tu utilisais les objets
de la bibliothèque Excel.
Avatar
Alain Lebayle
Bonsoir Michdenis,
Je te remercie beaucoup pour ta pugnacité ;-)
En effet, je ne suis pourtant pas dans le bon forum et tu me montre le
chemin tout comme Jacques93, c'est vraiment super de votre part !
Mille merci pour tous ces précieux conseils qui m'ont grandement fait
avancer !!!
Bravo pour vos connaissances et votre aide, malgré mes explications
assez alambiquées...
Alain


michdenis a écrit :
| si je veux récupérer le chemin du bureau sur lequel je
| me trouve, je ne trouve pas la bonne syntaxe.

Dans un fichier VBS ou En VBA, tu peux utiliser ce code.
Dans ton fichier vbs, tu as déjà un objet wsh, Nul besoin
de récréer l'objet une deuxième fois.

Set wsh = CreateObject( "WScript.Shell" )
Bureau = wsh.SpecialFolders("Desktop")
Msgbox Bureau

Set wsh = CreateObject( "WScript.Shell" )
Cette ligne est utilisée pour créer une instance de la
bibliothèque "Scripting".

Pour voir tous les objets que contient cette bibliothèque,
Ouvre la fenêtre de l'éditeur de code VBA dans Excel,
Barre des menus / outils / Références / et tu coches l'item
suivant : "Microsoft Scripting Runtime"

Maintenant, dans l'explorateur d'objets que tu peux afficher
avec le raccourci clavier F2, ouvre la liste déroulante du haut
de la fenêtre "toutes les bibliothèques", sélectionne "Scripting"
et dans le bas de la fenêtre, section de gauche, tu as tous les
objets que tu peux utiliser avec l'objet WSH que tu as créé avec
la ligne de code Set wsh = CreateObject( "WScript.Shell" ).
Si tu cliques sur un de ces objets (section de gauche), tu obtiens
dans la section de droite, toutes les méthodes ou propriétés qui
sont propres à cet objet. Les objets sont différents, mais les principes
de programmation sont les mêmes que si tu utilisais les objets
de la bibliothèque Excel.




Avatar
Alain Lebayle
Bonjour,
Tout est OK, cela marche parfaitement !
Un très grand merci à tous, notamment
Michdenis, Jacques93, At, Daniel C...
Très bonne journée ;-)
Alain


Jacques93 a écrit :
Il y a beaucoup de points communs entre la syntaxe de VBA et de VBS.
Par contre, certains objets, ici wsh (Shell), fso (FileSystemObject),
sont plus fréquemment utilisés en VBS :

Dim wsh, fso
Dim ProfilesPath, fColl, f1
Dim Origine

Set wsh = CreateObject( "WScript.Shell" )
set fso = CreateObject ("Scripting.FileSystemObject")

Set ProfilesPath = fso.GetFolder _
(wsh.ExpandEnvironmentStrings("%AppData%") & _
"ThunderbirdProfiles")

Set fColl = ProfilesPath.SubFolders
For Each f1 in fColl
If LCase(Right(f1.Name,8)) = ".default" then
Origine = ProfilesPath & "" & f1.Name & "" & "prefs.js"
End If
Next

MsgBox "Origine : " & Origine

fso.CopyFile Origine, "C:", True

Set fso = Nothing
Set wsh = Nothing

NB : il y a un forum dédié au scripting (pas uniquement VBS)

microsoft.public.fr.scripting


Alain Lebayle a écrit :

Bonsoir Jacques93,
Je te remercie grandement ainsi que tous les autres contributeurs de
m'aider sur cette procédure, mais je ne connais pas très bien, le
langage VBS et de fait, j'ai beaucoup de mal à adapter.
Mais effectivement, cela fonctionne parfaitement pour avoir le chemin
par défaut. Mais comme tu le dis, je butte sur le dossier *.default






1 2 3