lunnatick
Messages postés175Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention28 octobre 2013
-
6 mars 2006 à 22:24
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 2007
-
11 mars 2006 à 12:54
Bonjour, j'ai unpetit souci sur un script VBS, se script ouvre un eboite de dialogue pour sélectionné un fichier sur le disque puis créer un fichier var.bat, le fichier var batch est créer dans le même répertoire que le fichier sélectionné, alor que je voudrai qu'il soit créer dans le même répertoire que le VBS, donc voici mon script:
Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
objDialog.OpenFileOpenDlg
VarSelctn = objDialog.FileName
'wscript.echo "Set VarSelctn=" & VarSelctn
'''''''''''''''''''''''''''''''''''''''''''''''''''''''' Const ForReading 1, ForWriting 2
Set FichierTXT = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("var.bat", ForWriting,true)
f.write("Set VarSelctn=" & VarSelctn)
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 6 mars 2006 à 22:59
J'ai cru comprendre que tu voulais :
1 - récupérer un nom de fichier
2 - créer un fichier, dans le répertoire de l'application, un batch dans lequel sera utilisé ce nom de fichier.
Bref, pour, dans vbs, récupérer le nom du répertoire de l'application (du script), on peut faire :
' Fonction de récupération du répertoire courant
Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, ""))
'msgbox GetPath
End Function
Tu peux consulter l'excellent site de Jean-Claude Bellamy, http://jc.bellamy.free.fr/fr/jcb.html
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 6 mars 2006 à 23:22
Il faut que tu appelle la fonction, exemples de scripts :
'Premier script clean
'appel de la fonction
GetPath
'fin du script
'définition de la fonction
Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, ""))
msgbox GetPath
End Function
'Deuxieme script maxicourt
msgbox Left(path, InStrRev(WScript.ScriptFullName, ""))
'tout sur la même ligne
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 6 mars 2006 à 23:23
Re,
En VBS, pour executer une function , utilise Call.
Tout dépend ton contexte et ta façon de programmer.
Pour l'aide, google et Script \SCRIPT56 pour VBS et WSH.
Comme l'a dit Alain, adresses interessantes:
http://jc.bellamy.free.fr/fr/jcb.html http://www.laltruiste.com/
Il y en a d'autres.
Personnellement, j'ai appris avec ses 2 sites et surtout avec ce forum (merci Nix, les Admins et nous, vous)
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 7 mars 2006 à 00:16
Bon, là, je ne comprends pas ce que tu veux faire...
Tu as un premier batch (batch1.bat par exemple) qui lance ton script (MonVBS.vbs) avec un paramètre quelconque.
Ton vbs doit récupérer ce paramètre, demander un autre nom de fichier (avec ton objet SafrcFileDlg qui m'interesse car je ne le connaissais pas) et créer un autre batch (var.bat) dans le répertoire du script, et, je suppose, lancer ce batch à la fin;
Ben t'en veux des choses.....
comme je ne suis pas sûr de ce que tu veux, je te donne déjà de quoi récupérer un argument :
Récupérer un paramètre de commande
Dans un batch, c'est le %1
Dans un vbs, faire comme suit :
'**********************
' Création de l'objet Argument
Dim objArgs
Set objArgs = WScript.Arguments
'' Récupération des arguments : le fichier source
If objArgs.Count <>1 then
MsgBox "Veuillez fournir un et un seul paramètre."
WScript.Quit
end if
strParametre=objArgs(0)
msgbox strParametre
Next
'*** strParametre recoit ton argument
'*** si tu lance "MonVBS.vbs Titi", strParametre="Titi"
'***********************
lunnatick
Messages postés175Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention28 octobre 2013 7 mars 2006 à 00:39
Merci encore pour votre patience, donc voici le script qui fonctionne parfaitement:
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
VarRepCaurant = objArgs(I)
'WScript.Echo VarRepCaurant
Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
objDialog.OpenFileOpenDlg
VarSelctn = objDialog.FileName
'wscript.echo "Set VarSelctn=" & VarSelctn
''''''''''''''''''''''''''''''''''''''''''''''''''''''''Const ForReading 1, ForWriting 2
Set FichierTXT = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(VarRepCaurant & "var.bat", ForWriting,true)
f.write("Set VarSelctn=" & VarSelctn)
f.close
Mais il reste un détail, à sont éxécution le vbs renvoie cette erreur:
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 7 mars 2006 à 00:03
Attention, la définition de la fonction getpath et en plein milieu du corp de ton script, écris plutôt :
'***essai de script "LeScript.vbs"
'*** Script placé dans "C`:\MesAppli"
Dim VarSelctn '*** variable qui prendra le nom du fichier sélectionné
Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
objDialog.OpenFileOpenDlg
VarSelctn = objDialog.FileName
'wscript.echo "Set VarSelctn=" & VarSelctnConst ForReading 1, ForWriting 2
Set FichierTXT = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Dim VarChemin '*** variable qui va stocker le répertoire du vbs
'*** on appelle ici la fonction GetPath et tu rajoute le nom de ton batch
VarChemin=GetPath
wscript.echo "répertoire du bach : " & VarChemin
'*** ouvre le batch
Set f = fso.OpenTextFile(VarChemin & "var.bat", ForWriting,true)
f.write("Set VarSelctn=" & VarSelctn)
'*** ferme le batch
f.close
'*** fin du script
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function GetPath()
Dim path
'WScript.ScriptfullName ramène par exemple C:\MesAppli\LeScript.vbs
path = WScript.ScriptFullName
'On ne garde que ce qui est à gauche du dernier slash (compris), soit C:\MesAppli\
GetPath = Left(path, InStrRev(path, ""))
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 7 mars 2006 à 00:59
Peut-être un problème d'espace dans un chemin de fichier ou dans l'argument :
Le genre C:\Program files, ça donne souvent deux arguments ("C:\Program" et "files")
S'est presque parfait, le vbs se lance, réupere le chemin de l'emplacement du bat, créer le fichier var.bat mais le call n'a pas l'air de foctionné par ce que la variable %VarSelctn% n'affiche que "" dans le fenêtre dos, pour tant le del supprime bien var.bat, sauriez vous qe qui ne va pas ?