Batch problème opérande [Résolu]

Signaler
Messages postés
9
Date d'inscription
jeudi 8 octobre 2020
Statut
Membre
Dernière intervention
27 octobre 2020
-
Messages postés
12788
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
29 octobre 2020
-
Bonjour,


J'ai écris le programme suivant qui incrémente des variables si l'adresse IP testée répond. J'essai de le faire marcher en .cmd mais cela ne fonctionne pas, la variable failures ne prends pas de valeur, et total ne prends pas 0 comme valeur initiale.

Aussi, dans la boucle fort à chaque passage de set la ommande me répond: il manque une oprande

if not exist stats.txt echo 0 0 0 > stats.txt
for /f "TOKENS=1,2,3" %%a in (stats.txt) do @(
@set /a total=%a
@set /a failures=%b
@set /a n=%c
)

ping 127.0.0.1 | find "TTL"
if errorlevel 1 (
set result=FAIL
set /a failures+=1
set /a n+=1
) ELSE (
set result=TRUE
set /a n=0
)

set /a total+=1
echo %date% %time% %result% >> log.txt
echo %total% %failures% %n% > stats.txt

if /I "%n%" EQU "10" (
@set /a n=0
echo ERROR GET TO WORK
)

Merci pour l'aide apportée




Configuration: Windows / Chrome 85.0.4183.121

1 réponse

Messages postés
12788
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
29 octobre 2020
3 712
Bonjour,

Les variables appartenant à la boucle FOR doivent être précéder de 2 signes %%

for /f "TOKENS=1,2,3" %%a in (stats.txt) do @(
@set /a total=%%a
@set /a failures=%%b
@set /a n=%%c
)

Messages postés
9
Date d'inscription
jeudi 8 octobre 2020
Statut
Membre
Dernière intervention
27 octobre 2020

exact merci!

Par contre, sais-tu pourquoi la boucle if final ne fonctionne pas, n ne se met pas 0 une fois qu'il atteint la valeur de 10?

J'ai essayé en enlevant l'@ devant le set mais ça ne change rien.

Enfin, est-il possible de faire afficher un message à l'écran, un echo ne semble pas fonctionner, l'affichage disparait apres exécution du programme.
Messages postés
12788
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
29 octobre 2020
3 712 >
Messages postés
9
Date d'inscription
jeudi 8 octobre 2020
Statut
Membre
Dernière intervention
27 octobre 2020

if %n% EQU 10 (
set n=0
echo ERROR GET TO WORK
)
pause