Plusieurs actions dans un else ?

Fermé
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 - Modifié par holybeer le 25/04/2012 à 13:50
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 - 27 avril 2012 à 11:23
Bonjour,

Une question toute bête, mais j'dois réaliser un petit script en batch. Je teste si un fichier est présent. Dans le cas contraire, je veux afficher un message d'erreur simple, et ensuite je ferme le programme.

En gros, ça fait ça if exist "monrepertoire" ( echo fichier bien installé ) else ( echo pas installé; exit )

Est ce que c'est possible ? J'ai pas vraiment trouvé.. donc je demande.

Merci !
A voir également:

4 réponses

Help--ps2-- Messages postés 839 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 7 août 2013 114
25 avril 2012 à 13:56
Hello

alors ça fait un pitit moment que j'ai pas touché le batch mais il me semble que ça serait plus comme ça :

if exist 'tonrepertoire' goto :OK else goto :PASBON

:OK echo fichier bien installé
:PAS BON echo pas installé

je suis pas très sur au niveau de la prez , mais de souvenir c'est comme ça que je faisait dans mes batchs pour patcher un fichier déjà présent par exemple
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
Modifié par holybeer le 25/04/2012 à 14:10
J'ai trouvé cette syntaxe sur batcher.fr " IF EXIST nomfichier. (del nomfichier.) ELSE echo nomfichier. introuvable "

Problème, je vérifie si ça existe. S oui, je rentre dans la suite du chemin et fais mes actions, si non, je sors et j'affiche un message d'erreur.

Le goto est une sorte de pointeur non ? Je ne peux pas mettre un echo directement ?

ah oui aussi dernière chose, je peux pas aligner plusieurs commandes à la suite dans le if ou le else ? Parce que je vois pas trop comment faire pour dire, je rentre dans le repertoire, je supprime les fichiers déjà présent, puis je copie les bons fichiers. J'suis une grosse daube en batch Windows. J'ai touché un le bash, mais bon ..
0
Help--ps2-- Messages postés 839 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 7 août 2013 114
25 avril 2012 à 14:17
là tout de suite sincèrement j'ai pas le souvenir , ça fait trop longtemps ... quand je rentrerai du taf je t'enverrai le code que j'avais utilisé ( et qui marche très bien ) pour faire ce type de batch .
Oui le goto est un pointeur . Tu pourrais mettre des echo , c'est juste moins clair ( bon en même temps pour des batch si courts ça n'a peut être pas d'intérêt de faire un goto )
Et je comprends pas ta dernière question :(
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
25 avril 2012 à 14:21
Ce que je veux faire :

if exist "fichier.truc" ( action1 puis action2 puis action3 ) else (actionA puis actionB puis actionC)

Voilà. ;)
0
Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 369
Modifié par Danelectro le 25/04/2012 à 14:28
Salut, tu peux utiliser & pour concaténer deux commandes ;)

if exist fichier.truc action1 & action2 & action3
if not exist fichier.truc action4 & action5...

Autre possibilité :

if exist fichier.truc (
action1
action2
action3
) else (
action4
action5
...
)
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
25 avril 2012 à 14:26
ah ! Merci !

Je pensais que c'était un ; pour exécuter une suite de commande. ;)
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
25 avril 2012 à 14:34
Pas sur que ton autre possibilité marche. Le if et le else ne doivent pas être sur la même ligne pour fonctionner ?
0
Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 369
25 avril 2012 à 14:57
Non j'ai toujours fait comme ça perso :)
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
25 avril 2012 à 15:12
ah ba écoute, j'vais essayer tout ça !
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 25/04/2012 à 18:23
Si c'est si compliqué en batch, pourquoi ne pas chercher une manière productive de programmer ?

Quelqu'un qui veut faire ce que tu veux, il met 1 minute avec Python:


from os.path import isfile 

if isfile(chemin_de_fichier): 
    action A 
    action B 
    action C 
else: 
    action D 
    action E 
print 'Le chemin spécifié est incorrect'


en Python 2.x
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
26 avril 2012 à 09:27
Parce que c'est pour déployer sur des clients via GPO.
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
26 avril 2012 à 10:57
Merci.

Alors là je suis dépassé, mais je suis curieux.
Ton programme batch avec des if est-il destiné à être installé sur des postes clients pour tourner ensuite sur chacun des postes clients ? Ou bien est-il un programme qui se charge de transférer des caractéristiques de GPO vers des postes clients ?
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
26 avril 2012 à 11:29
Non. AD va lancer le script au démarrage. Le but de mon script était de vérifier si dans tel répertoire, j'ai le dictionnaire français ( avec Zimbra Desktop ). Si non, je copie les fichiers à partir d'un chemin réseau, vers le répertoire utilisateur. Si oui, je quitte tout simplement.
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 26/04/2012 à 12:52
Puisqu'il s'agit de démarrage et de Zimbra Desktop, je conclus que le script doit tourner sur des postes clients. Merci

Ceci dit, le lancement d'un programme au démarrage n'est pas obligé d'être effectué par AD, un raccourci placé dans le dossier C:\Documents and Settings\Admin\Menu Démarrer\Programmes\Démarrage peut le faire aussi, non ?
Dans ce cas, on peut aussi envisager placer un script Python ou de n'importe quel autre langage qui fera ce que tu veux faire.
Dans ton cas, ce n'est pas possible de faire ainsi ?
0
holybeer Messages postés 383 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 29 novembre 2013 65
26 avril 2012 à 13:46
" Ceci dit, le lancement d'un programme au démarrage n'est pas obligé d'être effectué par AD, un raccourci placé dans le dossier [..]"

J'ai oublié un détail. La GPO qui lance le script, et celle qui installe Zimbra Desktop sont différentes. Le script va se lancer à chaque démarrage, tandis que l'autre va n'installer qu'une seule fois le programme. Quand j'entends démarrage, c'est spécifique à AD. Tu peux initialiser un script soit au démarrage de la machine, ou soit à son extinction. Pas au sens menu démarrer. ;)

Qui plus est, pour lancer du python, j'ai besoin d'un client qui va compiler mon script. Il ne me semble pas que python est installé sur mes clients de un parce que ça ne leur sert strictement à rien, et de deux, ça me ferait une création supplémentaire de GPO. ;)
0