Fichier batch: "for...in...do...if exist...goto...else...goto" ne marc

KidCode Messages postés 3 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 janvier 2003 - 13 janv. 2003 à 15:35
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 - 21 janv. 2003 à 00:17
Bonjour

J'ai créé un fichier batch qui vérifie l'existence de fichiers dans un dossier et en fonction de ce qu'il trouve exécute ou non un traitement.

Afin de répéter le "if exist" pour chaque fichier, j'ai passé la liste des fichiers dans une variable a%.

"for a% in (fic1, fic2, etc..) do if exist a% goto :next else goto :error"

Cette ligne de commande fonctionne bien jusqu'à goto :next.
Le "else goto" n'est pas accepté par le système.

Pourquoi?

Comment puis-je faire?

3 réponses

cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
13 janv. 2003 à 17:22
Salut. Essaie :
for %%a in (fic1, fic2, etc..) do if exist %%a goto next else goto error
0
KidCode Messages postés 3 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 20 janvier 2003
20 janv. 2003 à 19:36
Ok, parfait!

Je suis 1 peu circonspect devant la position des symboles % dans les fichiers batch.

Parfois 1 devant la variable puis 1 autre derrière.

D'autres fois 2 devant la variable, et rien derrière.

Cela reste bien mystérieux pour moi, sachant que les infos que j'ai pu glanées à ce sujet, n'explique jamais à fond les différents cas d'utilisation de syntaxe.

En tout cas encore merci à toi!

KidCode
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
21 janv. 2003 à 00:17
Bonsoir. Quelques indications sur MS-DOS

Commandes MS-DOS sur la ligne de commande
+++++++++++++++++++++++++++++++++++++++++
1) Exemple avec FOR
FOR %f IN (*.TXT *.DOC) DO TYPE %f
affiche (TYPE en DOS) tous les fichiers .TXT et .DOC
Voir exemple 4 ci-dessous

Dans un fichier BATCH
+++++++++++++++++++++
2) %VAR% fait référence à la valeur
de la variable système VAR préalablement définie.
Voir la variable DESTIN ci-dessous

------------------------------------------
3) %1, %2, ... font référence aux paramètres passés au fichier BATCH.
Exemple le fichier COPIER.BAT appelé par COPIER C:\WINDOWS TRUC.TXT MACHIN.DOC
copie les fichiers TRUC.TXT et MACHIN.DOC du dossier par défaut dans C:\WINDOWS

@ECHO OFF
SET DESTIN=%1 <- 1er paramètre
:COPIE
SHIFT <-lecture du 2ème paramètre, puis du 3ème
IF "%1"=="" GOTO FIN
COPY %1 %DESTIN%
GOTO COPIE
:FIN
ECHO Copie terminée
-------------------------------------------
4) Exemple avec FOR (le même que 1)
FOR %%f IN (*.TXT *.DOC) DO TYPE %%f
affiche (TYPE en DOS) tous les fichiers .TXT et .DOC
-------------------------------------------
5) Pas de ELSE EN DOS => ta commande est incorrecte
for %%a in (fic1, fic2, etc..) do if exist %%a goto next else goto error
Il faut écrire :
FOR %%a IN (fic1, fic2, etc..) DO IF EXISTt %%a GOTO NEXT
GOTO ERROR <- Si n'existe pas
:NEXT
Rem traitement si existe
GOTO FIN <- pour sauter la section ERROR
:ERROR
Rem traitement si n'existe pas
:FIN

Signé : un vieil usager de MS-DOS
0
Rejoignez-nous