使用带有多个参数的调用 '&' 运算符
Using the call '&' operator with multiple parameters
$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
谢谢...
以下脚本适合我:
$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
实用程序,以便更好地理解参数的传递方式。
$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
谢谢...
以下脚本适合我:
$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
实用程序,以便更好地理解参数的传递方式。