1 votes

Comment faire la division et l'arrondi dans la chaîne ?

Je suis nouveau dans le domaine des scripts et je travaille avec un outil qui est exactement comme cmd de Windows. Mon fichier texte d'entrée est :

age=min;age_1D_param_min_64;meas_time =

Mon fichier batch lit les lignes de cette entrée et les sépare par " ; " puis exécute une fonction avec le fichier de jetons et d'âge du deuxième champ et enfin analyse la sortie de la troisième ligne. Dans l'image suivante, vous pouvez voir mon fichier batch actuel :

setlocal EnableDelayedExpansion
for /f "tokens=1,2,3* delims=;" %%a in (input.txt) do (
REM create token file
echo.%%a>current.tok

sinoparam -p D:\product\%%b 0x0100001F current.tok> out.txt

for /f %%y in ('findstr /C:"%%c" out.txt ^| sed "s/.*%%c .............. )do SET RESULT=%%y

echo.%%a;%%b;%%c;!RESULT!>>finaloutput.csv
)
GOTO :EOF

Maintenant, j'ai un problème avec une chaîne dans out.txt qui est le résultat de l'exécution de ma fonction :

meas_time =31.9999

Dans mon fichier batch, je veux faire ce qui suit :

  1. Trouver la valeur dans la chaîne de caractères dActual_age =31.9999 por findstr/C

  2. Si la valeur est inférieure à 1000, arrondissez-la et affichez le résultat.

  3. S'il est supérieur à 1000, divisez-le d'abord par 32, puis arrondissez le résultat.

0voto

Brandon Points 2580

Les calculs dans les fichiers batch sont généralement effectués avec set /A y set ne fournit pas de moyen d'arrondir les nombres ; il ne gère également que les calculs sur les nombres entiers.

Vous devrez trouver un outil en ligne de commande capable d'effectuer les calculs que vous souhaitez à partir du lot script, ou passer à un langage de script plus performant (par exemple : PowerShell - Arrondir au nombre entier le plus proche ou VBScript ).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X