我用PowerShell编写了一个脚本,在不同的计算机上调用Image Magick的montage.exe取得了各种成功。我写脚本的计算机在执行'montage‘命令时没有问题,但是在另一台安装了IM的计算机上,脚本出错了:
montage : The term 'montage' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At \\Server\Contact_Sheet_Local.ps1:51 char:9
+ montage -verbose -label %t -pointsize 20 -background '#FFFFFF ...
+ ~~~~~~~
+ CategoryInfo : ObjectNotFound: (montage:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException另外,我尝试先设置目录:
Set-Location -Path 'C:\Program Files\ImageMagick-7.0.3-Q16'
montage...每次在特定的计算机上,此操作都会失败。我已经尝试了IM版本7.0.3-Q16和6.9.1-6-Q8,因为两台计算机都是x64,所以都是x64
过去,我用.bat创建了使用ImageMagick的脚本,如上所述,我必须定义.exe的完整路径。
有没有人对这个问题有什么建议或经验?
发布于 2017-11-15 03:01:40
如果你的路径有空格,如果你只是试图基于它来执行,那么它将失败。您将需要使用点运算符
$Exe = 'C:\Program Files\ImageMagick-6.9.1-6-Q8\montage.exe'
If (-not (Test-Path -Path $Exe))
{
$Exe = 'C:\Program Files\ImageMagick-7.0.3-Q16\montage.exe'
}
. $Exe -arg1 -etc发布于 2017-11-15 03:35:16
默认情况下,PowerShell不会执行当前目录中的程序。如果要运行位于当前目录中的可执行文件,请在可执行文件的名称前加上.\或./。示例:
Set-Location "C:\Program Files\ImageMagick-7.0.3-Q16"
.\montage.exe ...& "C:\Program Files\ImageMagick-7.0.3-Q16\montage.exe" ...如果指定的路径和文件名不包含空格,则不需要&运算符;例如:
C:\ImageMagick\montage.exe ...你也可以这样写:
& C:\ImageMagick\montage.exe ...如果字符串变量中有一个可执行文件的文件名,并且想要执行它,请使用&;示例:
$execName = "C:\Program Files\ImageMagick-7.0.3-Q16\montage.exe"
& $execName ...https://stackoverflow.com/questions/47292991
复制相似问题