您必须在'%'运算符后面提供值表达式

时间:2015-07-06 04:53:13

标签: powershell imagemagick

PS C:\ImageMagick> convert -background transparent -fill hsb(0%,0%,0%) -font Arial -pointsize 18 -size 18x26 -gravity center label:p "output2.png"
At line:1 char:51
+ convert -background transparent -fill hsb(0%,0%,0%) -font Arial -pointsize 18 -s ...
+                                                   ~
You must provide a value expression following the '%' operator.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

上面的命令在cmd窗口中没有任何问题,在PowerShell中引发了一个错误,我在上面粘贴了它。我看了很多文章,但还没有找到一个好的解决方案。

我或许他们正在谈论我引用hsb的电话:

PS C:\ImageMagick> convert -background transparent -fill "hsb(0%,0%,0%)" -font Arial -pointsize 18 -size 18x26 -gravity center label:p "output2.png"
Invalid Parameter - transparent

这只会导致另一个问题。我尝试使用&为命令添加前缀,这是我以前不熟悉的技术,但似乎没有解决任何问题。

2 个答案:

答案 0 :(得分:5)

PowerShell不使用当前目录作为查找命令的宫殿。因此convert已解析为C:\Windows\System32\convert.exe

Get-Command convert|ft CommandType,Name,Definition

# CommandType Name        Definition
# ----------- ----        ----------
# Application convert.exe C:\Windows\System32\convert.exe

如果要从当前目录调用convert.exe,请使用.\convert代替convert

答案 1 :(得分:4)

PowerShell将parens解释为分组表达式,因此它认为%inside是余数(模数)运算符。您可以使用停止解析运算符--%来使PowerShell以“哑”模式进行解析,例如:

convert.exe --% -background transparent -fill hsb(0%,0%,0%) -font Arial -pointsize 18 -size 18x26 -gravity center label:p "output2.png"