Wie kann man innerhalb der Zeichenfolge eine Division und Rundung durchführen?

631
h.rahmati

Ich bin neu im Scripting und arbeite mit einem Tool, das genau wie Windows cmd ist. Meine Eingabetextdatei lautet:

age=min;age_1D_param_min_64;meas_time = 

Meine Batch-Datei liest die Zeilen aus dieser Eingabe und teilt die Zeilen mit „; ”Führt dann eine Funktion mit der Token- und Age-Datei aus dem zweiten Feld aus und parst danach die Ausgabe für die dritte Zeile. Im Folgenden sehen Sie meine aktuelle Batchdatei:

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 

Jetzt habe ich ein Problem mit einer Zeichenfolge in out.txt, die das Ergebnis der Ausführung meiner Funktion ist:

meas_time =31.9999 

In meiner Batchdatei möchte ich Folgendes tun:

  1. Finden Sie den Wert in string dActual_age =31.9999durchfindstr/C

  2. Wenn der Wert unter 1000 liegt, runden Sie ihn und zeigen Sie das Ergebnis.

  3. Wenn es größer als 1000 ist, teilen Sie es zuerst durch 32 und runden Sie dann das Ergebnis ab.

1

1 Antwort auf die Frage

0
Ƭᴇcʜιᴇ007

Mathematik in Batch-Dateien wird im Allgemeinen mit Runden durchgeführt set /Aund setbietet keine Möglichkeit, Zahlen zu runden. Es behandelt auch nur Ganzzahl-Mathematik.

Sie müssen ein Befehlszeilentool finden, das die vom Batch-Skript gewünschten Berechnungen ausführen kann, oder zu einer leistungsfähigeren Skriptsprache wechseln (z. B. PowerShell - Runden Sie auf die nächste ganze Zahl oder VBScript ).