$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
谢谢...
答案 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
实用程序,以便更好地了解参数的传递方式。