Faire un script en dos - FONCTION IF & FOR

Fermé
edenfusion - 25 janv. 2008 à 17:39
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 25 janv. 2008 à 19:33
Bonjour à tous,
Alors je sais que la prog en dos c'est un peu dépassé mais j'ai besoin de faire un petit script tout bête qui évidemment ne veut pas fonctionner.

Le but est d'aller chercher un caractere dans un fichier 1.txt, comparer ce caractere avec un autre fichier ref.txt, si les deux valeurs sont égales, lancer un batch comprat.bat

Mon prog ressemble à cela :

FOR %%c in (C:\chemin\1.txt) DO (echo %%c)
FOR %%b in (C:\chemin\ref.txt) DO (echo %%b)
IF %%b EQU %%C (goto LAUCHA) else (goto FIN)
:LAUCHA
comprat.bat
:FIN
pause
exit

En plus de cela, j'aimerais qu'il se lance de maniere automatique toutes les minutes par exemple... Et là, la tempo, je vois mal...

En tout cas, les lignes ci-dessus ne fonctionne pas car il "pause" à chaque fois...

Merci de vos lumières !!!
A voir également:

5 réponses

Bonjour

FOR %%c in (C:\chemin\1.txt) DO (echo %%c)
ceci ne recherche absolument pas un caractère dans le fichier C:\chemin\1.txt. Cette commande donne simplement la valeur C:\chemin\1.txt à la variable %c

de même, %b vaut C:\chemin\ref.txt

donc %b et %c sont différents.
0
Bonjour le père et merci de votre rapide réponse,

Ce que je trouve étrange c'est que le "echo %%c" me donne bien le caractére contenu dans le fichier. J'en ai donc déduit que cela aurait du fonctionner.
Comment est ce que je peux récupérer cette donnée alors ? Avec un SET ? Un FIND ?

Merci,
0
C'est vrai que je ne suis pas sous dos, mais dans la fenêtre d'invite de windows XP. Chez moi, ça affiche le nom du fichier, visiblement ça n'est pas du tout la même chose !
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
25 janv. 2008 à 18:13
Bonjour,

J'ai créé 2 fichiers 1.txt et ref.txt dans lesquels j'ai mis la lettre A, et j'ai initialisé les 2 variables c et b à la même valeur (A)
Ensuite j'ai un peu modifié ton code (modif en en gras)

set "c=A"
set "b=A"

FOR %%c in (1.txt) DO (echo OK FOR c %c%)
FOR %%b in (ref.txt) DO (echo OK FOR b %b%)

REM IF %%b EQU %%c (goto LAUCHA) else (goto FIN)
IF NOT %b% == %c% (goto FIN)

REM :LAUCHA
echo OK comprat.bat

pause
:FIN
pause
exit


Chez moi ça fonctionne
J'ai également fait un test en changeant la letrre d'un des 2 fichiers ça marche aussi


A toi,
0
Merci à vous tous pour vos réponses :

Pour le père, effectivement FOR sans l'option /f ne lit que le nopm de fichier, l'option permet de lire dedans.
Pour Christian, si tu Set les valeurs au début, je vois mal comment la comparaison peut fonctionner mais grâce à ton SET, j'ai trouvé la réponse qui finalement était devant mes yeux :


FOR /F %%c in (1.txt) DO (set c==%%c)
FOR /F %%b in (ref.txt) DO (set b==%%b)

IF NOT %b% NEQ %c% (goto FIN)
comprat.bat
pause
:FIN
pause
exit


----------------------------------
Maintenant, mon problème majeur car je n'ai trouvé aucune commande DOS qui permettait de faire une automatisation... C'est à dire que je souhaite que ce BATCH se lance toutes les minutes par exemple... Juste après la mise à jour d'une base de données renvoyées dans une page PHP. Hélas, on ne peut pas appeler de fichiers batch à partir d'une page PHP... Y aurait-il un moyen de faire cela...

Pour le père... Je suis d'ordinaire également sous Linux, ce qui permet de "scripter" plus facilement, mais là je suis obligé d'utiliser un applicatif Microsoft donc... id est.

Merci en tout cas,
0

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

Posez votre question
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
25 janv. 2008 à 19:33
En effet, j'ai dû me croiser les yeux lors de mon test où j'ai changé la lettre d'un de mes fichiers.
0