Скрипт Powershell для обработки png через параметры exe при сохранении структуры исходного файла
565
Tim Burton
В настоящее время я работаю над личным проектом, где мне нужно изменить размеры десятков тысяч файлов PNG. Я почти ничего не знаю о сценариях, PS или программировании (я художник-график)
Я использую программу под названием ImageResizer, которая изменяет размеры изображений.
Это программное обеспечение имеет параметры командной строки. Параметры, которые я использую:
/resize auto "XBR 2x <NoBlend>"
который берет мое изображение и использует алгоритм xBRx2, чтобы удвоить его размер. Именно этот вывод мне нужен.
На самом деле, у меня есть пакетный файл, который я взял с программного обеспечения Github, который делает именно то, что мне нужно, но только для одного изображения. Вот оно, для справки:
@echo off for %%F in (Input*.*) do ImageResizer-r129.exe /load "%%F" /resize auto "XBR 2x <NoBlend>" /save "Output\%%~nF%%~xF"
Вот моя дилемма. У меня, как я уже говорил, десятки тысяч этих изображений. И вы можете подумать "хорошо, что cmd может сделать это" ...
За исключением того, что эти png-файлы вложены в довольно обширный макет подкаталога ... и моя выходная папка должна поддерживать ту же компоновку подкаталогов, что и входные данные, чтобы работать с тем, что мне нужно.
Итак, чтобы объяснить, что мне нужно более четко ...
У меня есть папка INPUT. В этой папке несколько подпапок. И в каждой из этих папок есть больше папок ... как далеко они идут и имена этих папок различны. В конце концов, в конце каждой «ветки» находятся мои png-файлы, для обработки которых мне нужно программное обеспечение.
Итак, моя папка ввода выглядит примерно так:
L Входные данные L_ долото L__ текстуры L___ элементы L____ one.png L____ two.png L___ модели L____ one.png L____ two.png L_ артефакты L__ текстуры L___ элементы L____ groupOne L_____ one.png L_____ two.png L____ groupTwo и т. Д.
Как вы можете заметить из моего примера, нет единой структуры именования, и из того, что я мало знаю о скриптах, необходим рекурсивный переключатель для захвата всех png-файлов.
Все PNG из этой входной папки должны быть переданы через ImageResizer.exe с моими параметрами.
Затем обработанные файлы PNG необходимо вывести в папку «Выход» с той же разметкой поддиректории SAME, что и для «Input ...», поэтому файл «Input / chisel / textures / items / one.png» необходимо / сохранить в файле «Output / chisel / textures / items / one» .png и так далее для каждого png в моей папке Input.
Кроме того, скрипт может просто перезаписать исходное изображение из папки ввода. В любом случае достигается одна и та же цель.
Любая помощь очень ценится, так как мне нужно обработать около 18000 фунтов. Я начал просто копировать и вставлять свой пакетный скрипт снова и снова, заменяя каждый ввод и вывод каждым путем к файлу, но это потребляло слишком много времени.
Извините, я не могу помочь с Powershell, но ищу что-то эквивалентное команде * nix 'find', для которой задача будет тривиальной.
Glenn Randers-Pehrson 7 лет назад
0
1 ответ на вопрос
0
LotPings
Вот скрипт powershell, который делает то, что вы хотите. Поскольку у меня есть проблема с аргументами и цитированием (и без времени), он генерирует необходимые папки и командный файл со всеми аргументами для ImageResizer-r129.exe, вам придется выполнять отдельно.