Dos : Effectuer une boucle de détection en ajoutant un compteur

Résolu/Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 22 août 2013 à 08:29
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 23 août 2013 à 10:48
Bonjour,
je suis actuellement confronté au problème suivant :
Mon script doit se lancer à la condition que dans le dossier %toto% je trouve deux fichiers commençant par RES*
Si ce n'est pas le cas, le script revient sur wait, relançant le processus de détection.
Voici le script :
@REM Lancement de l'exit a la condition que les deux fichiers soient presents
:wait
set /a nbFichiers=0
for %a in (%toto%\RES*) do set /a nbFichiers+=1
if not %nbFichiers%==2 goto wait
@REM Traitement
.....

Voici mon problème :
je voudrait que cette boucle de détection s'opère un nombre limité de fois (par exemple pas plus de dix fois)
j'imagine que je dois ajouter un compteur quelquepart ?
Quelqu'un pourrait-il m'aider à résoudre cette problématique ?
Merci par avance.
K
A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
22 août 2013 à 09:45
hello
mettre le code dans une boucle
for /L %%a in (1,1,10) do (
le code ici
)
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
22 août 2013 à 10:23
Dubcek,
As-tu une idée comment je pourrais intégrer mon code dans la boucle que tu proposes ?
Merci.
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
22 août 2013 à 09:58
Bonjour Dubcek,
Tu veux dire comme ça ? :
for /L %%a in (1,1,10) do (
set /a nbFichiers=0
for %a in (%toto%\RES*) do set /a nbFichiers+=1
if %nbFichiers%==2 goto traitement
)
:traitement

Désolé, je suis un médiocre en dos ...
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 22/08/2013 à 10:01
Hello,

déjà si tu mets ton "set /a nbFichiers=0" là, il sera remis à 0 à chaque itération de la première boucle ... :-)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 22/08/2013 à 10:20
que veux tu faire 10 fois ?
for /L %%a in (1,1,10) do (
  set /a nbFichiers=0
  for %%b in (%toto%\RES*) do set /a nbFichiers+=1
  if %nbFichiers% EQU 2 goto traitement
)
goto xxx
:traitement
ca va aller très vite
j'ai ajouté goto xxx sinon à la fin de la boucle, il va exécuter :traitement
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
22 août 2013 à 10:32
Je veux contrôler la présence de deux fichiers RES*
Ces fichiers arrivent dans le répertoire %toto% alléatoirement.
Je désire que mon traitement se déclenche uniquement si il y a détection des deux fichiers.
Le contrôle peut tourner 10 fois ou même 100 fois.
L'idée c'est d'avoir un mode de détection qui tourne pendant environs 5mn.

Par contre, je n'ai pas compris l'ajout du goto xxx ?
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 22/08/2013 à 10:43
"goto xxx" c'est parce que même si le batch trouve pas les fichiers il exécutera le traitement ":traitement" en fin de boucles, tu dois donc mettre un étiquette ":xxx" après tes traitement (ou peut importe le nom)

Sinon ton "set /a nbFichiers=0" tu l'as mis quand même ? (même si il doit pas être dans les boucles, faut le mettre avant ...)
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
22 août 2013 à 10:49
Ah oui je comprends !
je peux mettre "goto FIN" par exemple ?
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
22 août 2013 à 10:02
Ok donc je procède comme ça ? :
for /L %%a in (1,1,10) do (
for %a in (%toto%\RES*) do set /a nbFichiers+=1
if %nbFichiers%==2 goto traitement
)
:traitement
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 22/08/2013 à 10:09
Jsais pas, ptete bien ... Si tu veux voir ce qui se passe dans ta deuxieme boucle tu mets un "echo nbFichiers = %nbFichiers%" dans ta boucle et tu lances ...
Tu verras bien si ça marche.

(Jsuis sous Linux)
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
22 août 2013 à 10:22
Je viens de le tester, manifestement ça ne fonctionne pas.
Le processus tourne 10x même si les deux fichiers sont présents.
Il y a certainement quelquechose que je n'ai pas compris...
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
23 août 2013 à 10:48
Bonjour messieurs et merci beaucoup pour votre aide.
Mon script fonctionne maintenant grace à vous !
Bonne continuation et à bientôt.
K
0