Petit souci sur un script VBS

[Résolu]
Signaler
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013
-
Messages postés
262
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
27 avril 2007
-
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

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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

Bonsoir, vous voulez dire qu'il faut que je remplace ceci:

Dim fso, f

Par ceci:

fso.MoveFile Input, Output

?
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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.
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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 ?
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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.
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

Au fait, j'appell mon vbs avec un batch, comme ceci:

cscript MonVBS.vbs
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

Il faudrai donc que je puisse transmettre le paramétre de la variable dos de mon bat:

%~dp0

Au vbs

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

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
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

Ah non l'erreur ne venez pas du vbs mais du batch, merci encore, s'est bon s'est réglé.
Messages postés
262
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
27 avril 2007
1
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
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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.
Messages postés
175
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
28 octobre 2013

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 ?