2017-05-10 36 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的所有別名