Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Autres langages > Général Visual Basic 6 et VBScript > VBScript

VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript

Réponse
 
Outils de la discussion
Vieux 24/04/2006, 14h25   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut [VBS]appeler un fichier bat

je suis en train de mettre en place une nouvelle commande en WHS, qui installe automatiquement un logiciel.
fonctionnement :

on appelle la commande en rentrant une valeur en parametre
ex : Z:> autoinstall.vbs acrobatrea_6

le logiciel se situe dans => Z:\acrobatrea_6

Ce que je n'arrive pas à faire c'est appeler le fichier "install.bat" (qui lance l'executable ou le package) qui se situe dans le dossier => Z:\acrobatrea_6\install.bat


des bout de mon code :

Code :
 
Set ObjArg = WScript.Arguments
logiciel = ObjArg(I)
 
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists(logiciel)) Then
wscript.echo "le dossier existe"
install = 1
Else
wscript.echo "CE PROGRAMME N'EXISTE PAS "
install = 0
End If
 
if install then
 
"appeler le fichier batch dans currentdirectory\logiciel\install.bat"
 
else
wscript.echo "ERREUR"
end if

merci pour votre aide

Dernière modification par AlainTech ; 24/04/2006 à 21h33
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 14h51   #2 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Code :
Call Shell("cmd /c c:\Chemin\coucou.bat")
F1 + FAQ + Rechercher
Tu n'aurais pas eu à attendre

A+
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 15h28   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut

j'ai pas trouver la fonction recherche sur le forum ... dsl

et ta solution ne fonctionne po

dans l'appel du .bat je dois utiliser les variables "logiciel" et "curentfldr"

j'avais un debut de reponse je crois mais ça ne fonctionne pas...

voila ce que j'ai :

Citation:
Set WshShell = WScript.CreateObject("WScript.Shell")
curentfldr = wshshell.currentdirectory & "\" & logiciel
curentfldr.Run "cmd /c curentfldr\install.bat"
*variable logiciel contient => acrobatrea_6
*variable curentfldr contient => Z:\acrobatrea_6

merki
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 15h46   #4 (permalink)
Responsable Visual Basic
 
Avatar de bbil
 
Date d'inscription: juin 2003
Localisation: Toulouse-Mirepoix
Âge: 42
Messages: 7 571
Envoyer un message via Skype™ à bbil
Par défaut

Comme cela ?

Code :
 Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd /c Z:\acrobatrea_6\install.bat"
bbil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 15h59   #5 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut

ça va fonctionné mais ici je n'utilise pas les variables de l'utilisateurs

c'est rentré en dur...




j'ai peut etre une piste

je vais essaier de me deplacé dans le dossier pour que mon dossier courant soit : => Z:\acrobatrea_6

comme ça j'aurai qu'à mettre le code :

Citation:
Set WshShell = WScript.CreateObject("WScript.Shell")
wshshell.Run "install.bat"
mais j'arrive pas ...


j'ai essaier ça dans un desespoir totale

Citation:
Set WshShell = WScript.CreateObject("WScript.Shell")
set wshsell.currentdirectory = wshshell.currentdirectory & "\" & logiciel
mais ça ne marche pas
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 16h03   #6 (permalink)
Responsable Visual Basic
 
Avatar de bbil
 
Date d'inscription: juin 2003
Localisation: Toulouse-Mirepoix
Âge: 42
Messages: 7 571
Envoyer un message via Skype™ à bbil
Par défaut

ben si les variables contiennent le bon texte essai :
Code :
 
Set WshShell = WScript.CreateObject("WScript.Shell")
curentfldr = wshshell.currentdirectory & "\" & logiciel
WshShell.Run "cmd /c " & curentfldr & "\install.bat"
 
bbil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 16h24   #7 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut

j'ai l'impression qu'il ne prend que les valeurs qui sont dans les premieres guillemets et non toute la ligne

j'ai essaier d'ajouter des parenthèses mais toujours pas ...
j'ai essaier de mettre en variable le chemin complet aussi marche pas...


dire qu'il me manque plus que ça pour que se soit fini

Dernière modification par angelus95 ; 24/04/2006 à 16h47
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 16h43   #8 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Si ça ne fonctionne pas essaie de passer par une variable
Code :
 
LaVar = "cmd /c " & curentfldr & "\install.bat"
curentfldr.Run LaVar
 
Mais je pense que la première syntaxe donnée devrait fonctionner si tu te trouves déjà dans le bon répertoire, ce que me donne à penser ta ligne
Citation:
curentfldr = wshshell.currentdirectory & "\" & logiciel
Simplement, modifie la ligne
Code :
 
Call Shell("cmd /c " & curentfldr & "\install.bat")
 
A+
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 16h45   #9 (permalink)
Responsable Visual Basic
 
Avatar de bbil
 
Date d'inscription: juin 2003
Localisation: Toulouse-Mirepoix
Âge: 42
Messages: 7 571
Envoyer un message via Skype™ à bbil
Par défaut

n'aurai tu pas un probléme sur le contenu de tes variables .. affiche les :


Code :
Wscript.echo "cmd /c " & curentfldr & "\install.bat"
bbil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 16h58   #10 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut

Citation:
Envoyé par angelus95
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists(logiciel)) Then
wscript.echo "le dossier existe"
install = 1

oui je fait des echo de mes var depuis le debut elles sont ok

Code :
 
if install then
Set WshShell = WScript.CreateObject("WScript.Shell")
curentfldr = wshshell.currentdirectory & logiciel
wscript.echo curentfldr & "\install.bat"
'LaVar = "cmd " & curentfldr & "\install.bat"
'wshshell.Run LaVar
'WshShell.Run curentfldr & "\install.bat"
Call Shell("cmd /c " & curentfldr & "\install.bat")
 
le call shell ne fonctionne pas j'avais aussi essaier ces methodes


le desespoir m'envahie...
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 17h05   #11 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut

peut etre que si je met tout mon code ça vous aidera

Code :
 
Dim MyArray, logiciel, pass, fso, wshshell
 
Set ObjArg = WScript.Arguments
logiciel = ObjArg(I)
syntaxe = " la syntaxe est :  {nomdulogicielcomplet}_{nversion}[sous version]   ///  nom du logiciel est limité a 10 caractères, le numéro de version doit être numérique et comporter 2 caractères"
 
MyArray = Split(Logiciel, "_", -1, 1)
 
if len(myarray(0)) > 10 then
 
   wscript.echo "ERREUR!! DE SYNTAXE pour Nom de logiciel"
   wscript.echo " "
   wscript.echo " "
   wscript.echo " "
   wscript.echo syntaxe
   install = 0
 
elseif len(myarray(1))>2 or not isnumeric(myarray(1)) or install then
 
   wscript.echo "ERREUR!! DE SYNTAXE pour N° de version"
   wscript.echo " "
   wscript.echo " "
   wscript.echo " "
   wscript.echo syntaxe
   install = 0
else
   install=1
end if
 
Set fso = CreateObject("Scripting.FileSystemObject")
 
   If (fso.FolderExists(logiciel)) Then
      wscript.echo "le dossier existe"
      install = 1
   Else
       wscript.echo "CE PROGRAMME N'EXISTE PAS "
       install = 0
   End If
 
if install then
 
   Set WshShell = WScript.CreateObject("WScript.Shell")
   curentfldr = wshshell.currentdirectory & logiciel
   wscript.echo curentfldr & "\install.bat"
   'LaVar = "cmd " & curentfldr & "\install.bat"
   'wshshell.Run LaVar
   'WshShell.Run curentfldr & "\install.bat"
   Call Shell("cmd /c " & curentfldr & "\install.bat")
   'Set WshShell = WScript.CreateObject("WScript.Shell")
   'set wshsell.currentdirectory = wshshell.currentdirectory & "\" & logiciel
 
else
 
   wscript.echo "ERREUR"
 
end if
 
Edit par ouskel'n'or
S'il te plait, indente ton code (si wscript le tolère...)

Dernière modification par angelus95 ; 25/04/2006 à 09h27
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/04/2006, 17h23   #12 (permalink)
Responsable Visual Basic
 
Avatar de bbil
 
Date d'inscription: juin 2003
Localisation: Toulouse-Mirepoix
Âge: 42
Messages: 7 571
Envoyer un message via Skype™ à bbil
Par défaut

moi ce que je comprends pas dans ton code c'est que tu teste si le répertoire contenu dans la variable logiciel existe :
Code :
If (fso.FolderExists(logiciel)) Then
et puis avant de l'utiliser tu y rajoute le répertoire courant :

Code :
curentfldr = wshshell.currentdirectory & logiciel
 
le répertoire n'est pas doublé ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2006, 09h11   #13 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut

mon script est executé à partir de la racine d'un lecteur mappé
le lecteur est en faite un point de distrib de logiciel où je stock tout.

ex => Z: <=== (wshshell.currentdirectory)

je test ensuite si le dossier du logiciel qu'on veut installer existe

acrobatrea_6 <==== (logiciel)


ensuite je fait une variable curentfldr (que j'ai renommé prgfldr ) pour avoir

Z:\acrobatrea_6 <===== (curentfldr)

dans ce dossier il y a un fichier .bat qui execute setup.msi <===== c'est là que ça bloque

j'sais pas si j'ai été claire?


resumé :

=> il y a une regle de nommage a respecter

- entré en variable des parametre <= ok
- séparation des valeurs <= ok
- test si les valeurs sont correct (regle de nommage) <= ok
- test si le dossier existe <= ok
- appelle le fichier batch <= fonctionne pas !!
- installation <= ok

Dernière modification par angelus95 ; 25/04/2006 à 13h10
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2006, 10h01   #14 (permalink)
Responsable Visual Basic
 
Avatar de bbil
 
Date d'inscription: juin 2003
Localisation: Toulouse-Mirepoix
Âge: 42
Messages: 7 571
Envoyer un message via Skype™ à bbil
Par défaut

mais c'est ou que cela bloque dans le ".bat" ? comment appelle tu setup.msi dans le .bat ...?
bbil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2006, 13h08   #15 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2006
Messages: 22
Par défaut

mdr non

ce qui block c'est que j'arrive pas a appeler mon .bat (que j'ai testé qui fonctionne en doubleclickant dessus )
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS VISUAL BASICFAQs VBTUTORIELS VBOUTILS VBSOURCES VBLIVRES VB

Réponse

Précédent   Forum des développeurs > Autres langages > Général Visual Basic 6 et VBScript > VBScript



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide