пакетный файл: арифметические операции над десятичными значениями - PullRequest
0 голосов
/ 06 марта 2011

Я вынужден использовать DOS для написания некоторых пакетных скриптов.Как делать арифметические операции над переменными?Как переписать последнюю строку?

FOR %%f IN (*.ogg) DO CALL :runsox "%%f"
del temp.ogg tmpfile
GOTO :EOF

:runsox
soxi -D %1>tmpfile

SET /P decvalue=<tmpfile * 1.2

Обновление :: После публикации bhu1st я не мог точно понять, как применить это к моему сценарию.Но GNU Bash имеет ту же проблему, не может работать с числами с плавающей запятой.Чтобы решить эту проблему в bash, нужно рассчитать значение с помощью bc , калькулятора командной строки.Я загружаю калькулятор командной строки .и используйте как в строке:

calcoo %decvalue%*1.2>tmpfile

Ответы [ 3 ]

0 голосов
/ 06 марта 2011

Я попытался запустить упрощенное арифметическое выражение с умножением с плавающей запятой, говорит интерпретатор Missing Operator.Я обнаружил, что пакетные файлы как таковые не поддерживают арифметику с плавающей запятой.

это может указывать на правильное направление: Деление с плавающей запятой в партии DOS

0 голосов
/ 10 марта 2011
FOR %%f IN (*.ogg) DO CALL :runsox "%%f"
del temp.ogg tmpfile
GOTO :EOF

:runsox
soxi -D %1>tmpfile
SET /P decvalue=<tmpfile
calc %decvalue%*1.2>tmpfile
SET /P decvalue=<tmpfile

Ужасно, но работает. Скачать калькулятор с http://download.cnet.com/Command-Line-Calculator/3000-2094_4-10897229.html

0 голосов
/ 06 марта 2011

Попробуйте:

SET /P tmpvalue=<tmpfile
SET /A decvalue=tmpvalue * 1.2

Но даже в этом случае результат будет усечен.Без десятичных знаков.

...