Précédent   Forum des professionnels en informatique > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 24/04/2006, 14h25   #1
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
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 00
Vieux 24/04/2006, 14h51   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 469
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 469
Points : 11 906
Points : 11 906
Code :
Call Shell("cmd /c c:\Chemin\coucou.bat")
F1 + FAQ + Rechercher
Tu n'aurais pas eu à attendre

A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h28   #3
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
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 00
Vieux 24/04/2006, 15h46   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 533
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 533
Points : 16 393
Points : 16 393
Envoyer un message via Skype™ à bbil
Comme cela ?

Code :
1
2
 Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd /c Z:\acrobatrea_6\install.bat"
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 15h59   #5
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
ç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 00
Vieux 24/04/2006, 16h03   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 533
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 533
Points : 16 393
Points : 16 393
Envoyer un message via Skype™ à bbil
ben si les variables contiennent le bon texte essai :
Code :
1
2
3
4
 
Set WshShell = WScript.CreateObject("WScript.Shell")
curentfldr = wshshell.currentdirectory & "\" & logiciel
WshShell.Run "cmd /c " & curentfldr & "\install.bat"
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 16h24   #7
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
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 00
Vieux 24/04/2006, 16h43   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 469
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 469
Points : 11 906
Points : 11 906
Si ça ne fonctionne pas essaie de passer par une variable
Code :
1
2
3
 
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 :
1
2
 
Call Shell("cmd /c " & curentfldr & "\install.bat")
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 16h45   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 533
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 533
Points : 16 393
Points : 16 393
Envoyer un message via Skype™ à bbil
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 16h58   #10
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
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 :
1
2
3
4
5
6
7
8
9
 
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 00
Vieux 24/04/2006, 17h05   #11
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
peut etre que si je met tout mon code ça vous aidera

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
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 00
Vieux 24/04/2006, 17h23   #12
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 533
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 533
Points : 16 393
Points : 16 393
Envoyer un message via Skype™ à bbil
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 09h11   #13
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
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 00
Vieux 25/04/2006, 10h01   #14
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 533
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 533
Points : 16 393
Points : 16 393
Envoyer un message via Skype™ à bbil
mais c'est ou que cela bloque dans le ".bat" ? comment appelle tu setup.msi dans le .bat ...?
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h08   #15
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
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 00
Vieux 25/04/2006, 13h14   #16
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
j'ai des propositions a faire :

- appeler le fichier par son chemin complet (logiciel\install.bat) => deja tanté
- se positionner sur le dossier logiciel et appeler uniquement "install.bat" => ça fonctionne mais j'arrive pas a me positionner sur le dossier logiciel
- utiliser la variable logiciel dans le fichier bat => je ne crois pas que se soit possible
angelus95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h31   #17
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 533
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 533
Points : 16 393
Points : 16 393
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par angelus95
j'ai des propositions a faire :

- - utiliser la variable logiciel dans le fichier bat => je ne crois pas que se soit possible
ci s'est possible ... tu peu la passer en paramétre à ton .bat ... puis dans le .bat tu utilise %1 , pour le 1° paramétre

mais je ne sais toujours pas si ton .bat s'éxécute ou pas ?
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h46   #18
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 0
Points : 0
Citation:
Envoyé par angelus
ce qui block c'est que j'arrive pas a appeler mon .bat (que j'ai testé qui fonctionne en doubleclickant dessus )
mon fichier bat :

Code :
1
2
3
4
 
echo off
cls
AdbeRdr60.exe
voila

j'ai pas tout compris pour utiliser ma variable logiciel de mon VB dans un BAT ??




angelus95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h54   #19
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 533
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 533
Points : 16 393
Points : 16 393
Envoyer un message via Skype™ à bbil
non mais dans ton code ? .. le ".bat" s'exécute ? pour les paramétre tu peu :


le ".bat"
Code :
1
2
3
echo off
cls
%1\AdbeRdr60.exe
et son appel :
Code :
1
2
 
WshShell.Run Logiciel & "\install.bat " & Logiciel
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 13h58   #20
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 469
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 469
Points : 11 906
Points : 11 906
Tu as une explication sur le passage de paramètres à un bat à cette adresse http://www.developpez.net/forums/sho...ram%E8tre+.bat

pour être plus précis http://www.developpez.net/forums/sho...ram%E8tre+.bat
Réponse donnée par bbil... déjà...

A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 13h39.


 
 
 
 
Partenaires

Hébergement Web