Rechercher : dans
Par :

Faire un script en dos - FONCTION IF & FOR

Dernière réponse le 25 jan 2008 à 19:33:14 edenfusion, le 25 jan 2008 à 17:39:12 
 Signaler ce message aux modérateurs

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 !!!

Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « Faire un script en dos FONCTION IF & FOR » dans :
Renommer plusieurs fichiers en batch VoirLe fait de renommer un grand nombre de fichiers peut très vite devenir fastidieux. Heureusement, il existe des outils permettant d'automatiser cette tâche dans un grand nombre de cas : Fonctionnalités natives Utilisation d'un programme...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...

1

le père, le 25 jan 2008 à 18:04:38

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.

Répondre à le père

2

edenfusion, le 25 jan 2008 à 18:08:28

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,

Répondre à edenfusion

4

le père, le 25 jan 2008 à 18:18:40

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 !

Répondre à le père

3

cchristian, le 25 jan 2008 à 18:13:09

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, Cordialement.

Cchristian.

Répondre à cchristian

5

edenfusion, le 25 jan 2008 à 18:57:09

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,

Répondre à edenfusion

6

 cchristian, le 25 jan 2008 à 19:33:14

En effet, j'ai dû me croiser les yeux lors de mon test où j'ai changé la lettre d'un de mes fichiers. Cordialement.

Cchristian.

Répondre à cchristian