Problème de lancement de Batch à partir d'un Shell

lbeguinsncf Messages postés 4 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 9 octobre 2009 - 1 oct. 2009 à 08:57
lbeguinsncf Messages postés 4 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 9 octobre 2009 - 9 oct. 2009 à 10:10
Bonjour,

Je suis tombé sur un os et je compte sur votre aide pour m'en sortir.

J'ai un batch qui lance un exécutable avec un fichier en paramètre. Cet exécutable effectue un traitement sur le fichier texte passé en parmètre et créer un fichier résultat.

Lorsque je lance le batch par windows, le déroulement est conforme aux lignes de commande et l'exécutable... s'exécute !

Cependant, lorsque je lance ce même batch à partir d'une commande shell dans mon module VBA, je vois la fenêtre de commande dos du batch s'ouvrir, mais l'exécutable ne fait pas son boulot.

Ci-dessous, les lignes du code VBA :
'Lancer les batchs de traitement
            Commande = ThisWorkbook.Path & "\DecodUen.bat"
            Shell Commande, vbNormalFocus
            DoEvents

Merci d'avance

Lolo

5 réponses

c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
2 oct. 2009 à 12:32
Bonjour

Essayez :

ShellExecute(NULL, "open", "test.bat", "parametre1 parametre2", "", SW_SHOWNORMAL)

Syntaxe à verifier

Bonne journée
0
lbeguinsncf Messages postés 4 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 9 octobre 2009
5 oct. 2009 à 10:35
J'essaye çà et je vous tiens au courant, merci.


Lolo
0
lbeguinsncf Messages postés 4 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 09:10
J'ai refait un essai de la manière suivante. Un programme vba (Shell "D:\DECODEUR\DECODEUR\LANCEDEC.BAT", vbNormalFocus) lance le BATCH "LANCEDEC.BAT" qui contient les instructions suivantes :
@ECHO OFF
Call DECODUEN.BAT
PAUSE
ECHO ON

DECODUEN.BAT contient un traitement effectuant des copies et des renommages de fichiers et le lancement d'un exécutable qui décode ces fichiers.

Le batch LANCEDEC.BAT n'a aucune utilité à par le fait de décorréler les l'erreurs de lancement, du contenu du batch.

J'ai toujours le même message dans ma fenêtre d'interpréteur de commande:
'DECODUEN.BAT' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes

Je suis dans le flou complet et je n'ai rien trouvé sur le web à ce propos.


Lolo
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
9 oct. 2009 à 10:06
Salut,

normal un bat n'est pas un program mais un type de fichier texte interpreter. Donc sans son interpreteur on ne peu rien en faire.

Pour un batch l'interpreteur est cmd.exe.

donc:

Dim CMDAppli As Double, Commande as String

commande = """" & thisworkbook.path & "\decoduen.bat"""
'la foultitude de double cotes permet de prendre compte un chemin qui contiendrait des espaces
'en effet ici la variable commande est passée en parametre à cmd.exe hors l'espace est considéré par
'cmd.exe, comme un séparateur de parametre. Autrement dit sans les doubles cote, si la variable commande 
contient des espaces elle sera interpretée comme plusieurs parametre et non comme un seul. 
CMDAppli = Shell("cmd.exe /k " & commande, 1)  'remplace /k par /c si tu veux que le batch ce ferme 
'une fois terminé. Mais pour le debugage je te conseils d'utiliser /k car si il y a un probleme 
'tu ne veras rien.
doevents


A+
0

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

Posez votre question
lbeguinsncf Messages postés 4 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 9 octobre 2009
9 oct. 2009 à 10:10
je commence à comprendre ma connerie, bon j'essaye de nouveau...

Lolo
0
Rejoignez-nous