VBS:Récuper le chemin du script

Gamarah Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
Gloops1 Messages postés 322 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai créé un script qui dois enregistrez dans un fichier texte le contenu d'une variable (Id), je voudrais enregistrer le fichier texte dans le chemin d'accès du script :

[...]
Const ForReading = 1, ForWriting = 2
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("***\Identifiant.txt", ForWriting,true)
f.write(Id)
[...]

Je voudrais savoir si il y a un moyen pour à la place des *** mettre le chemin d'accès du script en exécution...

Merci

3 réponses

Z3n1th
 
Je ne vois pas vraiment en quoi ce que tu proposes est plus court ou plus explicite que :
'path = "\\le\repertoire\du\script"
path = fso.GetParentFolderName(wscript.ScriptFullName)

Si tu veux absolument faire toi-même le découpage du string, tu n'as qu'à faire :
'path = "\\le\repertoire\du\script\"
path = Replace(WScript.ScriptFullName, WScript.ScriptName, "")

Plus le code est simple à comprendre, mieux c'est.
3
Z3n1th
 
Voici un premier exemple :
'Une fausse solution
Dim fso, f, path
Set fso = CreateObject("Scripting.FileSystemObject")
path = fso.getabsolutepathname(".")
Set f = fso.OpenTextFile(path & "\Identifiant.txt", ForWriting,true)

L'ennui de ce code, c'est qu'il donne le répertoire d'où l'on exécute le script, donc si tu le lances avec cmd ou un autre programme, il faudrait d'abord se placer dans le répertoire du script. Donc utilise plutôt ce code :
Dim fso, f, path
Set fso = CreateObject("Scripting.FileSystemObject")
path = fso.GetParentFolderName(wscript.ScriptFullName)
Set f = fso.OpenTextFile(path & "\Identifiant.txt", ForWriting,true)

Là, ça donne le même résultat quel que soit le dossier depuis lequel tu l'exécutes.

Sinon, en hta, j'utiliserais ceci (si quelqu'un a une meilleure solution, ça m'intéresse) :
Set fso = CreateObject("Scripting.FileSystemObject")
path = Replace(Replace(document.location.pathname, "MonFichier.hta", ""), "%20", " ")
Set f = fso.OpenTextFile(path & "Identifiant.txt", ForWriting,true)

Si quelqu'un a mieux, qu'il poste ici, je n'ai débuté le vbs que très récemment et mes connaissances de ce langage se résument à ce que Google m'apporte.
0
Gloops1 Messages postés 322 Date d'inscription   Statut Membre Dernière intervention   11
 
path = Replace(Replace(document.location.pathname, "MonFichier.hta", ""), "%20", " ")

J'ai fait pareil, tout-à-l'heure.
Et puis après j'ai renommé le script en mettant un accent aigu dans le nom : le script m'a dit que la paresse ne paie pas toujours.

path = window.location.href;
path=decodeURIComponent(path.replace("file:///", ""));

Là je peux gaîment mettre des accents, des tirets, des doubles points, des tildés ...

Ah mais tiens j'ai bien fait de venir ici :

path = decodeURIComponent(window.location.pathname) ;
0
Gamarah
 
Merci... Je viens aussi de trouver une solution plus courte :

Path = Left(WScript.ScriptFullName, InStr(WScript.ScriptFullName, WScript.ScriptName)-1)
0