Batch problème opérande

Résolu
hunter_civ Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   -
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
A voir également:

1 réponse

barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
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
)

0
hunter_civ Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > hunter_civ Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
if %n% EQU 10 (
set n=0
echo ERROR GET TO WORK
)
pause
0