Petit souci sur un script VBS

Résolu
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013 - 6 mars 2006 à 22:24
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 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)

Quelqu'un saurait-il m'aider ?

23 réponses

asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
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

Alain 31
3
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
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

Alain 31
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
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)
3
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
6 mars 2006 à 23:35
Ah comme ceci s'est parfait:

Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, ""))
End Function


msgbox GetPath

Merci encore pour votre patience
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
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"
'***********************

Bonne recherche
Alain 31
3
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 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:

Mount Switch syntax error

Sauriez vous d'ou sa vien ?
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
6 mars 2006 à 22:37
Bonsoir,

Dans un post, la semaine dernière, je t'ai dit:
dans la simplicité, ca évite des Dim + ...

(en vbs)
fso.MoveFile Input, Output
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
6 mars 2006 à 22:45
Bonsoir, vous voulez dire qu'il faut que je remplace ceci:

Dim fso, f

Par ceci:

fso.MoveFile Input, Output

?
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
6 mars 2006 à 23:03
Merci beacoup

Donc j'ai créer un vbs test avec ceci:

Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, ""))
msgbox GetPath
End Function

Mais quand j'éxécute le vbs aucun msgbox ne s'affiche.
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
6 mars 2006 à 23:32
Merci encore pour ses expliquations est ses liens.

Pouriez vous m'expliquer un peut plus en détail j'arive pas a faire fonctionner corectement le script ?
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
6 mars 2006 à 23:40
Enfin s'est parfait pour l'affichage du MsgBox, maitenant il faut encore que j'adapte ceci à mon script vbs, j'ai donc essayer ceci:

Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
objDialog.OpenFileOpenDlg
VarSelctn = objDialog.FileName
'wscript.echo "Set VarSelctn=" & VarSelctn
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function GetPath()
Dim path
Deftpath = WScript.ScriptFullName
DeftpathForBat = Left(Deftpath, InStrRev(path, ""))
End Function
'MsgBox DeftpathForBat
''''''''''''''''''''''''''''''''''''''''''''''''''''''''Const ForReading 1, ForWriting 2
Set FichierTXT = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(DeftpathForBat & "var.bat", ForWriting,true)
f.write("Set VarSelctn=" & VarSelctn)

Mais le fichier var.bat est toujour créer avec le fichier sélectionné dans le boite de dialogue.
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
6 mars 2006 à 23:43
Au fait, j'appell mon vbs avec un batch, comme ceci:

cscript MonVBS.vbs
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
6 mars 2006 à 23:58
Il faudrai donc que je puisse transmettre le paramétre de la variable dos de mon bat:

%~dp0

Au vbs

Sauriez vous comment faire ?
0
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
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
''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Alain 31
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
7 mars 2006 à 00:13
Je comprend pas, sa ne fonctionne toujours pas:

Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
objDialog.OpenFileOpenDlg
VarSelctn = objDialog.FileName
'wscript.echo "Set VarSelctn=" & VarSelctn
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim DeftPathForBat
DeftPathForBat = GetPath
wscript.echo DeftpathForBat
''''''''''''''''''''''''''''''''''''''''''''''''''''''''Const ForReading 1, ForWriting 2
Set FichierTXT = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(DeftPathForBat & "var.bat", ForWriting,true)
f.write("Set VarSelctn=" & VarSelctn)
f.close
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
7 mars 2006 à 00:14
Heu sa le code:

Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
objDialog.OpenFileOpenDlg
VarSelctn = objDialog.FileName
'wscript.echo "Set VarSelctn=" & VarSelctn
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim DeftPathForBat
DeftPathForBat = GetPath
wscript.echo DeftpathForBat
''''''''''''''''''''''''''''''''''''''''''''''''''''''''Const ForReading 1, ForWriting 2
Set FichierTXT = WScript.CreateObject("WScript.Shell")
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(DeftPathForBat & "var.bat", ForWriting,true)
f.write("Set VarSelctn=" & VarSelctn)
f.close

Function GetPath()
Dim path
DeftPath = WScript.ScriptFullName
DeftPathForBat = Left(Deftpath, InStrRev(path, ""))
End Function
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
7 mars 2006 à 00:58
Ah non l'erreur ne venez pas du vbs mais du batch, merci encore, s'est bon s'est réglé.
0
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
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")

a voir....

Alain 31
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
7 mars 2006 à 01:37
Non non s'été pas sa, s'été une autre commande dans mon batch rien a voir avec le VBS.

Merci encore pour votre patience.
0
lunnatick Messages postés 175 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 28 octobre 2013
7 mars 2006 à 23:12
Me revoila, j'ai un petit souci:

Donc voila comment j'appel mon vbs avec mon bat:

__________________________________________________________________
script monvbs.vbs %~dp0 & call "%~dp0var.bat" & del "%~dp0var.bat" & echo %VarSelctn%
__________________________________________________________________

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 ?
0
Rejoignez-nous