Execution d'un .bat sans succes

Résolu
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007 - 9 mai 2007 à 07:40
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007 - 16 mai 2007 à 16:13
Bonjour,

je cherche a executer un fichier .bat. J ai trouvé la commande mais celle ci ne marche pas.
J'utilise : Process.Start(Application.StartupPath & "\VTFTools\TGA-2-VTF.bat"
J'ai la fenêtre cmd qui s'ouvre et ce ferme aussitôt.

Et je devrait me retrouver avec ceci :
http://img400.imageshack.us/img400/5517/cmdlz0.jpg

Ou bien existe t'il un moyen d'éxecuter le contenu du .bat qui est :
"vtex.exe -mkdir -shader LightmappedGeneric hl2\materialsrc\*.tga"

Merci d'avance.

16 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
11 mai 2007 à 16:32
Le .bat est executé dans le dossier courant, et non dans le dossier où il se trouve.
Une solution est de modifer le .bat comme ceci :

cd VTFTools
vtex.exe -mkdir -shader LightmappedGeneric hl2\materialsrc\*.tga
pause
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 mai 2007 à 09:14
tu peux executer :

vtex.exe -mkdir -shader LightmappedGeneric hl2\materialsrc\*.tga

via Process.Start...

pense a séparer l'exe des arguments qui lui sont transmis

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
9 mai 2007 à 09:42
oui mais je vois pas comment, je vais aller regarder si je trouve pas une source et dans le cas contraire je reviendrais ici.
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
10 mai 2007 à 13:43
j ai essayé pas mal de chose mais rien de concluant si quelqu un pouvait me mettre sur la voie ca serait cool.

Merci d'avance.
0

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

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
10 mai 2007 à 13:59
Salut,

Heu bah :
Process.Start("vtex.exe", "-mkdir -shader LightmappedGeneric hl2\materialsrc\*.tga");

Avec les imports qui vont bien.

Attention, il faut que l'exe puisse trouver vtex.exe (system32, répertoire courant... et que l'execution se passe dans le répertoire parent à
LightmappedGeneric hl2. Mais bon, tu peux faire de l'absolue aussi (c:\......).

http://msdn2.microsoft.com/en-us/library/h6ak8zt5.aspx
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
11 mai 2007 à 07:42
Process.Start("vtex.exe", "-mkdir -shader LightmappedGeneric hl2\materialsrc\*.tga")
Pour cette ligne c'est ce que j ai mis et j ai les imports suivant :
Imports System
Imports System.Diagnostics
Imports System.ComponentModel

Mon fichier vtex.exe n'a pas de répertoire fixe cela dépendera de l'installation.
Je me sert de "Application.StartupPath & "\VTFTools" quand j ai besoin d'aller dans le répertoire de vtftools.

Mais la je vois vraiment pas et c est la premiere fois que j'essaye de me servir de ce genre de fonction alors c est encore moins evident pour un débutan comme moi.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
11 mai 2007 à 13:31
Salut,

Bin gratte.

Met temporairement les chemins en dur pour voir si c'est pas un souci de chemin relatif, de dossier courant...

Avec un Process.Start(Application.StartupPath & "\VTFTools\TGA-2-VTF.bat"), essaie d'avoir un message d'erreur en rajoutant une ligne en fin de ton .bat :
pause

C'est probablement une annerie d'histoire de répertoire et de problème de chemin.
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
11 mai 2007 à 14:11
j ai essayé comme ceci mais ca donne rien non plus

Process.Start("D:\Pojet VB.net\CSs Source\CSs Source\bin\Debug\VTFTools\TGA-2-VTF.bat")

je vois la fenêtre cmd s'ouvrir en arriere plan et se refermer aussitôt.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
11 mai 2007 à 14:37
Si tu as une fenêtre DOS, alors Process.Start doit trouver le .bat.

Modifie ton .bat comme je l'ai dit :

vtex.exe -mkdir -shader LightmappedGeneric hl2\materialsrc\*.tga
pause

La fenêtre devrait rester à l'écran avec un jolie message d'erreur.
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
11 mai 2007 à 14:58
En fait c est vtex.exe qui est pas reconnu.

Comme si il pensait qu il était à la racine de mon apply. Le dossier VTFTools est oublié.

Voir screen :
http://img509.imageshack.us/img509/3847/capturerfe3.jpg

et pourtant apres vérification j ai bien :
Process.Start("D:\Pojet VB.net\CSs Source\CSs Source\bin\Debug\VTFTools\TGA-2-VTF.bat")
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
11 mai 2007 à 19:05
voila ca marche du coup.

C'etait vraiment pas dur mais j'aurais jamais pensé a ca.

Maitenant je voudrais que mon programme attende la fin d'execution du .bat pour continuer et que la fenêtre DOS ce ferme toute seule.

J'ai enlevé le pause mais j'ai toujours une demande de présser une touche en anglais.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 mai 2007 à 13:47
Erf.

Il y a des chances pour que ton message (genre press any key) soit codé en dur dans vtex.exe...

Cela risque d'être compliqué de s'en débarrasser, à moins que tu ne parvienne à lui envoyer une pression de touche.

Sinon, pour attendre, il faut regarder du côté de WaitForExit
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
14 mai 2007 à 14:02
Voila ce que j ai apres execution du .bat

Je vais regarder pour le WaitForExit ce que je trouve.
Sinon est il possible de simuler la pression d'une touche apres la fin d'execution du .bat avec une fonction du type sendkeys ?
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 mai 2007 à 18:05
Bah je suis pas sûre que les routines type sendkey fonctionne pour les fenêtre DOS (En même temps, peut être que sous Vista...)


Mais qui ne tente rien... n'a rien.
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
15 mai 2007 à 19:07
J'ai dejaresolu l'histoire du WaitOrExit

        'conversion de l'image tga en vtf
        Dim ProcessVTF As Process = Process.Start (Application.StartupPath & "\VTFTools\TGA-2-VTF.bat" ,AppWinStyle.NormalFocus)
        ProcessVTF.WaitForExit()

J ai ma fenetre DOS qui passe toujours derriere la fenetre cela soit etre du au TopMost = True. J'arrive pas à la faire passer devant.
J'ai essayer avec un SendKeys.Send("SPACE") mais sans résultat pour le moment. Je suis pas sur que cela aille à la feneter DOS mais plutôt sur mon apply.
0
sebo1100 Messages postés 35 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 9 août 2007
16 mai 2007 à 16:13
J ai trouvé

il fallait mettre dans le .bat la ligne suivante
vtex.exe -mkdir -nopause -shader LightmappedGeneric hl2\materialsrc\*.tga

J ai ajouté le -nopause et hop elle se ferme a la fin de l execution.

Merci de ton aide.
0
Rejoignez-nous