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 10 mars 2006 à 20:06
Sincèrement, sans comprendre ce que tu veux faire, il est difficile de répondre une fois pour toute...
Sans analyse, on passe son temps à développer des modules et les jeter au fur et à mesure de ses nouveaux besoins, de ses nouvelles envies et:ou de ses nouvelles idées.
Il faut poser un minimum de cadre, pour connaître les "primitives" dont on va avoir besoin.
Un fois ces primitives (functions/sub) établies, c'est elles que l'on fait évoluer ou que l'on
décline en plusieurs versions selon le besoin.
Ne pas oublier le résultat que l'on attend.....
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 11 mars 2006 à 12:54
Ci joint le script comme je l'imagine, sans avoir vraiment compris ce que tu voulais faire....
'*********************************************
' MonVBS.vbs : créé par zorglub le 35 nivose -123
' (il faisait froid ce jour là)
'*********************************************
' Mode de fonctionnement
'---------------------------------------------
' A DECRIRE
'---------------------------------------------
' Versions et évolutions
'---------------------------------------------
' A DECRIRE
'---------------------------------------------
' Idées et modifications à faire
'---------------------------------------------
'(aa/mm/jj) Vérifier l'objet de sélection de fichier
'(aa/mm/jj) développer la gestion d'erreur
'(aa/mm/jj) vérifier si le fichier a bien été choisi
'---------------------------------------------
'*********************************************
'Une habitude à prendre, déclarer les variables, constantes et objets
' en décrivant leur rôle
' En vbs, pour les objets, les déclarer plutôt au moment
' où on en a besoin (pour supprimer l'instance + facilement)
Option Explicit
'*********************************************
'Je crée une variable de Test pour simuler différents fonctionnement
Dim iTest '*** variable de version test
'iTest=0 '*** Version opérationnelle
iTest=1 'pour lancer le vbs sans arguments (les arguments sont simulés)
'*********************************************
Dim objArgs '*** objet reprenant les arguments de l'environnement script
Dim varArg1 '*** premier argument
Dim varArg2 '*** deuxième argument
Dim objDialog '*** objet permettant l'ouverture de boîte de dialogue
'petite remarque, l'objet Safrfiledlg (comme ses équivalents MSOffice)
'ne sont pas disponibles sur toutes les plateformes.... (merci Bill)
dim VarSelctn '*** Fichier sélectionné
Dim VarRepCourant'*** Répertoire du vbs
Dim fso '*** Objet FileSystem : acces aux fichiers
Dim file '*** objet fichier
Dim WshShell '*** objet shell
'************ Récupération des arguments
Set objArgs = WScript.Arguments
'test du nombre d'arguments
Select case iTest
Case 0 'version opérationnelle (il faut fournir les paramètres)
if objArgs.Count <> 2 Then 'si pas 2 arguments, message d'erreur et sortie
msgbox "Cette fonction n'accepte que deux arguments"
Wscript.quit
end if
'ici, on est sûr d'avoir 2 arguments que l'on récupère
'Attention, le tableau d'argument a pour base l'indice 0
varArg1=objArgs(0)
varArg2=objArgs(1)
Case 1 'version test (les arguments sont simulés)
varArg1="titi" 'objArgs(0)
varArg2="toto" 'objArgs(1)
end select
Set objArgs=nothing
'************ récupère un nom de fichier
Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
objDialog.OpenFileOpenDlg
VarSelctn = objDialog.FileName
'wscript.echo "Set VarSelctn=" & VarSelctn
Set objDialog=nothing
'************ récupère le répertoire courant
VarRepCourant=GetPath()
'************ crée le batchConst ForReading 1, ForWriting 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(VarRepCourant & "var.bat", ForWriting,true)
file.WriteLine("Set VarSelctn=" & """" & VarSelctn & """")
file.WriteLine("Set " & varArg1 & "=" & varArg2)
file.WriteLine("Pause")
file.WriteLine("SET")
file.WriteLine("Pause")
file.Close
set file=nothing
set fso=nothing
'************ execute le batch
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("""" & VarRepCourant & "var.bat" & """")
'************ fin du script
Wscript.quit
'********************************************************
' Fonctions et modules
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Récupère le répertoire courant
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
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
A+