Arrondir un nombre au centième BATCH
Fermé
Marks
-
17 oct. 2022 à 11:41
brucine Messages postés 14311 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024 - 17 oct. 2022 à 14:06
brucine Messages postés 14311 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024 - 17 oct. 2022 à 14:06
A voir également:
- Arrondir un nombre au centième BATCH
- Fichier batch - Guide
- Javascript arrondir à 2 décimales ✓ - Forum Javascript
- 1 centième en m2 - Forum Architecture / décoration
- Convertir heure en centième excel ✓ - Forum Excel
- Nombre facile - Télécharger - Outils professionnels
1 réponse
brucine
Messages postés
14311
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
25 avril 2024
1 812
17 oct. 2022 à 12:15
17 oct. 2022 à 12:15
Bonjour,
En rajoutant après la déclaration de la variable mémoire une diminution de sa taille?
SET/A "memoire!count!=%memoire!count!:~0,3%"
mais qui va poser problème si tous les résultats attendus ne sont pas à 6 chiffres, puisque par exemple 1000, 100 000 et
1 000 000 vont toujours valoir 100 et qu'il faudrait alors tester la taille de cette variable et tenir compte le cas échéant d'un caractère supplémentaire (l'espace).
17 oct. 2022 à 12:55
Bonjour,
Merci pour ta réponse mais en faisant cela, j'obtiens -1 comme valeur pour le variable !memoire!count!
Ce que je cherche c'est qu'en exécutant ce script, il récupère les valeurs de Task Manager qui sont en Ko donc XXX XXX Ko et je voudrais juste récupérer les 3 premiers chiffres.
C'est pas un problème si les résultats attendus ne sont pas à 6 chiffres car ici je recherche simplement la plus grandes valeurs parmi les 3 pour ensuite l'afficher.
En laissant mon code comme là haut, en ajoutant /A devant la variable !memoire!count! j'obtiens "Opérateur manquant" pour la récupération de la mémoire.
Modifié le 17 oct. 2022 à 13:18
Pour la première partie, j'ai été un peu expéditif; pour limiter le résultat à 3 chiffres, il faut sortir de la boucle:
FOR /F "USEBACKQ tokens=5 delims= " %%a IN (`tasklist /NH ^| SORT /r /+58 ^| find /n " " ^| findstr /r \[[0-3]\]`) DO (
SET memoire!count!=%%a
SET /a count=!count!+1
)
SET/A "memoire1=%memoire1:~0,3%"
echo %memoire1%
17 oct. 2022 à 13:26
Du coup maintenant cela fonctionne bien, je vais juste refaire une boucle pour memoire2 et memoire3.
Merci beaucoup pour ton aide et bonne journée.
17 oct. 2022 à 14:06
Il faut rester en dehors de la boucle et écrire 2 lignes à suivre SET/A pour memoire2 et memoire3 avant de sortir ton résultat via ECHO ou SET et qui n'ont en principe pas besoin d'être en variable retardée: %memoire1% ou %processus2% suffisent.
Le fait d'écrire Mo derrière entraîne une erreur d'approximation pouvant aller jusqu'à 999 Ko, mais j'imagine que tu n'es pas à ça près.