1

Я новичок в сценариях, и я работаю с инструментом, который точно так же, как Windows CMD. Мой входной текстовый файл:

age=min;age_1D_param_min_64;meas_time =

Мой пакетный файл читает строки из этого ввода и разбивает строки на «; ”Затем выполняет функцию с файлом токена и возрастом из второго поля и после этого анализирует выходные данные для третьей строки. в следующем вы можете увидеть мой текущий командный файл:

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

Теперь у меня проблема с одной строкой в out.txt, которая является результатом выполнения моей функции:

meas_time =31.9999

В моем командном файле я хочу сделать следующее:

  1. Найдите значение в строке dActual_age =31.9999 помощью findstr/C

  2. Если значение меньше 1000, округлите его и покажите результат.

  3. Если оно больше 1000, сначала разделите его на 32, а затем округлите результат.

1 ответ1

0

Математика в пакетных файлах обычно выполняется с помощью set /A, и set не предоставляет способ округления чисел; он также обрабатывает только целочисленную математику.

Вам нужно будет найти инструмент командной строки, который сможет выполнить математические операции из пакетного сценария или переключиться на более мощный язык сценариев (например: PowerShell - округление до ближайшего целого числа или VBScript).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .