J'ai une boucle à boucle dans un fichier de commandes qui ressemble à ceci: la ligne: p> ne semble pas faire n'importe quelle division. Quelle est la syntaxe correcte pour diviser chaque y par 25? Je n'ai besoin que du résultat entier de cette division. p> p>
3 Réponses :
Cela ne fait rien parce que "y" est juste une lettre. Vous avez besoin de signes de pourcentage pour référencer la variable.
set /a x = %%y/25
Vous avez raison de y être une lettre. Mais mettre les panneaux de double pour cent ne se divisent toujours pas.
@ dr-rk - il se divise, c'est votre écho qui échoue. Voir Ma réponse
SET / A CODE> reconnaît automatiquement les variables
, pas besoin de mettre %% code> là
Les variables d'environnement ne doivent pas nécessairement être étendues à utiliser dans une déclaration définie / a. Mais pour les variables doit être étendue.
Également, même si votre calcul a fonctionné, l'écho échouerait parce que le pourcentage d'expansion a lieu lorsqu'une déclaration est analysée et la totalité de la construction est analysée à la fois. Donc, la valeur de% x% serait la valeur tel qu'il existait avant que la boucle soit exécutée. Pour obtenir la valeur qui a été définie dans la boucle, vous devez utiliser une expansion retardée. P>
En outre, vous devez supprimer l'espace avant l'opérateur d'affectation. Vous déclarez une variable avec un espace dans le nom. P>
@echo off setlocal enableDelayedExpansion for %%A in (100 200 300 400 500) do ( set n=%%A REM a FOR variable must be expanded set /a x=%%A/25 REM an environment variable need not be expanded set /a y=n/25 REM variables that were set within a block must be expanded using delayed expansion echo x=!x!, y=!y! REM another technique is to use CALL with doubled percents, but it is slower and less reliable call echo x=%%x%%, y=%%y%% )
J'avais le même problème, mais j'avais eu une question entière. Je multiplié après la division mais je dois auparavant. Ce qui se passait est quelque chose comme ça:
1 / 100x100 qui fonctionne comme 1 \ 100 = 0 puis 0x100 = 0
Je l'ai changé à
1x100 / 100 qui fonctionne comme 1x100 = 100 puis 100/100 = 1
DOS n'a pas
pour code> la capacité de calcul de la boucle et des mathématiques. Seule Windows CMD fait. Ils sont complètement différents