Arrondir un nombre au centième BATCH
Fermé
Marks
-
17 oct. 2022 à 11:41
brucine Messages postés 18573 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 13 janvier 2025 - 17 oct. 2022 à 14:06
brucine Messages postés 18573 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 13 janvier 2025 - 17 oct. 2022 à 14:06
A voir également:
- Arrondir un nombre au centième BATCH
- Fichier batch - Guide
- Nombre facile - Télécharger - Outils professionnels
- Convertir heure en centième excel ✓ - Forum Excel
- Conversion heures centièmes en heures minutes ✓ - Forum Excel
- Centieme heure ✓ - Forum Excel
1 réponse
brucine
Messages postés
18573
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
13 janvier 2025
2 781
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.