2017-05-10 34 views
0

我想通过磁盘上的文件列表进行迭代,使用VIPS/ImageMagick为每个文件运行命令,然后输出文件并将其移至不同的目录。我似乎无法让这些命令一起工作。PowerShell与ImageMagick/VIPS的集成

为什么变量$ _Basefile在这个命令中不起作用?

单个命令为VIPS

vips tiffsave input_file.tif output_file.tiff --args[...] 

PowerShell命令

ls | %{vips tiffsave $_BaseFile.tif $_BaseFile.tiff --compression jpeg --Q=90 --whateverelse } 

更新:答案正确标记以下工作。竖起大拇指解释了为什么它不起作用的原因!正确的命令是:

GCI -File -Filter "*.tif" | %{vips tiffsave "$($_.FullName)" "$($_.BaseName).tiff" --compression jpeg --Q=90} 
+0

LotPings明白了。更新了上面的问题以显示答案。 – Eris

回答

1
  • 要了解哪些方法/属性通过管道 暴露你应该发出Get-ChildItem -File|Get-Member或短ls -File|gm
  • 你会看到它的$_.FullName$_.BaseName你需要

因此请尝试:

GCI -File -Filter "*.tif" | %{vips tiffsave "$($_.FullName)" "$($_.BaseName).tiff" --compression jpeg --Q=90} 

ls,dir,gci是Get-ChildItem cmdlet的所有别名