Использование powershell из пакетного скрипта - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу воспользоваться powershell для выполнения простых математических вычислений внутри пакетного скрипта. Я могу рассчитать деление с плавающей запятой в пакетном скрипте с

set numerator=3.5
for /f %%i in ('powershell 10/%numerator%') do (set result=%%i)

, который правильно устанавливает переменную result в 2.85714285714286, но я не смог вызвать из пакетного сценария команду powershell, такую ​​как powershell [math]::max(3,4), которая возвращает максимум два числа. Вызов

for /f %%i in ('powershell [math]::max^(3,4^)') do (set result=%%i)

из пакетного сценария устанавливает для переменной result значение +.

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 14 сентября 2018

Необходимо также экранировать ,.В противном случае вы получите ошибку powershell

В строке: 1 символ: 14
+ [математика] :: max (3 4)
+ ~
Отсутствует ')' ввызов метода.
В строке: 1 символ: 15
+ [математика] :: max (3 4)
+ ~
Неожиданный токен '4' в выражении или операторе.
В строке: 1 символ: 16
+ [математика] :: max (3 4)
+ ~
неожиданный токен ')' в выражении или операторе.
+ CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception
+ FullyQualifiedErrorId: MissingEndParenthesisInMethodCall

И поскольку строки по умолчанию токенизируются в циклах for /f, результат равен +.


В общем, просто запятая.

for /f %%i in ('powershell [math]::max^(3^,4^)') do (set result=%%i)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...