Интеграция Powershell с ImageMagick / VIPS

Я пытаюсь просмотреть список файлов на диске, запустить команду для каждого файла с помощью VIPS/ImageMagick, затем вывести файл и переместить его в другой каталог. Я не могу заставить команды работать вместе.

Почему в этой команде не работают переменные $_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}

person Eris    schedule 10.05.2017    source источник
comment
LotPings понял. Обновлен вопрос выше, чтобы показать ответ.   -  person Eris    schedule 11.05.2017


Ответы (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.

person Community    schedule 10.05.2017