Powershell с Image Magick Montage читает из текстового файла

Я работаю над сценарием PowerShell, используя функцию монтажа Image Magick. Мой скрипт работает до тех пор, пока объем исходных файлов (.jpgs) не увеличится до неоднозначного количества файлов. Если "слишком много" файлов, скрипт завершается ошибкой из-за 'Program 'montage.exe' failed to run: The filename or extension is too long', На форуме Image Magick (ссылка @ внизу) было предложено читать PowerShell из текстового документа, чтобы уменьшить длину с помощью оператора '@'.

Код теперь выглядит так:

montage -verbose -label %t -pointsize 25 -background '#FFFFFF' -tile 24x5 -fill 'black' -define jpeg:size=600x780 -geometry 600x780+40+150 -quality 90 -auto-orient @E:\Output\contactSheetImages.txt E:\Contact_Sheet.jpg

Я получаю следующие ошибки:

montage : montage.exe: unable to open image '@E:ÿþE': No such file or directory @ error/blob.c/OpenBlob/2695.

montage.exe: no decode delegate for this image format `' @ error/constitute.c/ReadImage/508.

montage.exe:  `E:\Contact_Sheet.jpg' @ error/montage.c/MontageImageCommand/1774.

Я вполне уверен, что использование оператора "@" может вызвать путаницу в сценарии, но у меня недостаточно понимания использования "@" в PowerShell, чтобы понять, почему.

Может ли кто-либо с пониманием ImageMagick или просто с более сильным пониманием PowerShell объяснить, почему это может нарушить работу сценария?

Я пытался:

  • Замена @E:\Output\contactSheetImages.txt с переменной в Get-Content из текстового файла
  • Ориентация на текстовый документ без оператора "@"
  • Использование одинарных и двойных кавычек вокруг @E:\Output\contactSheetImages.txt

Форум Image Magick: https://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=34596

1 ответ

Решение

Спасибо всем за ваши идеи и помощь. Хотя я не смог использовать ни одну из предложенных идей, это позволило мне придумать простое решение.

Я просто устранил необходимость читать текстовый файл, нацелив файлы напрямую:

montage -verbose -label %t -pointsize 25 -background '#FFFFFF' -tile 24x5 -fill 'black' -define jpeg:size=600x780 -geometry 600x780+40+150 -quality 90 -auto-orient E:\Output\*.jpg E:\Contact_Sheet.jpg

Хотя мне хотелось бы решить проблему, а не разрабатывать обходной путь, мой сценарий сейчас работает.

Другие вопросы по тегам