使用呼叫'&'有多个参数的运算符

时间:2015-07-10 19:21:37

标签: powershell exe

            $sImageMagickHome = "C:\ImageMagick"
            $sImageMagickConv = "$sImageMagickHome\convert.exe"
            $sImageMagickArgs = @(  '--%', 
                            '-background transparent', 
                            '-fill hsb(0,0,0)', 
                            '-font Arial',
                            '-pointsize 18',
                            '-size 18x26',
                            '-gravity center')


            for ( $i = 0x01; $i -le 0x05; $i++ )
            {
                $y = [char]$i
                & $sImageMagickConv $sImageMagickArgs label:$y $sCharsDir\$y.png
                #Write-Host $sImageMagickConv $sImageMagickArgs label:$y $sCharsDir\$y.png
            }

使用Write-Host我可以得到一个示例,将粘贴复制到命令行,如果我从PowerShell提示符运行这一行,我发现它确实正常运行:

C:\ImageMagick\convert.exe --% -background transparent -fill hsb(0,0,0) -font Arial -pointsize 18 -size 18x26 -gravity center label:☺ C:\Users\erics_000\Desktop\Output\Chars\☺.png

使用呼叫运营商'&'但是从脚本内部完全不起作用,并导致一些错误消息:

convert.exe: UnableToOpenBlob `--%': No such file or directory @ error/blob.c/OpenBlob/2697.
convert.exe: NoDecodeDelegateForThisImageFormat `' @ error/constitute.c/ReadImage/501.
convert.exe: UnrecognizedOption `-background transparent' @ error/convert.c/ConvertImageCommand/858.

我读过的文章是: http://social.technet.microsoft.com/wiki/contents/articles/7703.powershell-running-executables.aspx

谢谢...

1 个答案:

答案 0 :(得分:2)

以下脚本适合我:

$sImageMagickHome = "C:\dev\im"
$sImageMagickConv = "$sImageMagickHome\convert.exe"
$sImageMagickArgs = @('-background', 'transparent', 
                '-fill', 'hsb(0,0,0)', 
                '-font', 'Arial',
                '-pointsize', '18',
                '-size', '18x26',
                '-gravity', 'center')


for ( $i = 65; $i -le 67; $i++ )
{
    $y = [char]$i
    & $sImageMagickConv $sImageMagickArgs label:$y c:\dev\$y.bmp
}

请注意,您不能只是Write-Host参数并尝试从命令行运行它,Powershell会对&运算符进行特殊处理(在需要时添加引号),当您传递相同的参数时它不会到Write-Host

您可能希望安装PSCX并使用与其绑定的echoargs实用程序,以便更好地了解参数的传递方式。

相关问题