Script en .bat

Fermé
dudu - 3 févr. 2009 à 14:58
 dudu - 12 févr. 2009 à 10:39
Bonjour,
j'ai créé un script en batch seulement j'ai l'impression qu'il ya a pas mal d'erreur ! Sa fonction est de lancer explorer.exe lorsqu'il ne se lance pas automatiquement a l'ouverture d'une session windows sur certains poste du reseau informatique. Etant stagiaire mon maitre de stage m'a demander de voir si il etait possible de le faire. Voici mon script

set var=$(qprocess | find "explorer.exe" /C)
set var

if %var% == "0" goto test
else if goto fin
:test start explorer.exe
:fin taskkill /F /im explorer.exe



Voila si vous pourriez m'aider ! parce que la je suis perdu ...
A voir également:

3 réponses

EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
3 févr. 2009 à 15:02
else if ça n'existe pas en fichiers de commande sous windows à ma connaissance.
0
je viens de modifier la ligne en question par if %var% =="1" goto fin
mais cela ne marche toujours pas :s
merci de la rapidité de la reponse tout de meme
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
3 févr. 2009 à 15:18
Ce qu'il faut que tu saches c'est que dans un script batch sous windows pas de fonction ou de contrôle du flux comme dans bash ou autre langage évolué. A ce titre tu pourrait éventuellement essayer de te pencher vers le vbscript. Donc en gros en batch pas de fonction pas de if(...then), else, else if (elif), for, while, do...while, until, j'en passe et des meilleures...

Dans un fichier batch toutes les insctructions sont exécutées ligne par ligne et la seule possibilité de saut c'est l'utilisation de goto (méthode critiquée par de nombreux développeurs moi y compris... m'enfin on va pas réinventer les fichiers de commande windows)
Au vu de ce qui vient d'être dit je ne comprend pas trop l'utilité du deuxième set var ? Et pour couronner le tout je ne suis pas forcément plus à l'aise en batch windows donc la syntaxe après le = du premier var ne me dis rien sous Windows donc à par le fait que tu utilises une commande externe pour savoir si le processus explorer.exe est présent ou pas je ne le comprend pas trop En fait c'est jute le $(...) que je ne comprend pas...

Je vois plus ça comme ça mais ça reste à tester.

set var=$(qprocess | find "explorer.exe" /C)

if %var% == "0" goto test
if %var% == "1" goto fin
:test start explorer.exe
:fin taskkill /F /im explorer.exe
0
Le deuxieme set var est créé pour tester juste si cela fonctionne que ce soit visible en fait. Donc je pense en effet me pencher sur du VBScript pour la suite puisque le .bat me parait tres restreint ! Merci a vous pour votre aide et votre temps.
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318 > dudu
3 févr. 2009 à 15:33
Ben disons qu'en se débrouillant un peu le batch peut être suffisamment puissant pour pas mal de choses mais le VBScript (je désigne indirectement par là Windows Script Host et cie) a été introduit dans Windows pour rattraper le retard qu'avait Windows par rapport à Linux en terme de scripting très utile aux administrateurs.
J'aurais plutôt utilisé echo %var% pour visualiser la valeur personnellement.
0
dudu > EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018
12 févr. 2009 à 10:39
Pour ceux que ca interesse j'ai tout de meme persisté en Batch et j'ai enfin réussi à résoudre mon problème donc je vous laisse mon script pour ceux qui rencontre le meme problème que moi :)

@echo off
qprocess | find /C "explorer.exe" > variable.txt
set /P var= < variable.txt
if %var%== 0 start explorer.exe
del variable.txt
0