Каждое изображение сохранить в отдельную папку. PhotoShop

Вчера на форуме Demiart встретил тривиальную задачу. Цитирую без исправлений:

Есть задача, нужно обработать много изображений и каждое изобр. сохранить в отдельную папку , которая будет называться аналогично названию изображения
Возможно ли реализовать через Action?

Скажу сразу. В PhotoShop через Action такую задачу реализовать не возможно.

Вы не сможете задать имя каталога для результата при исполнении дроплета, имя каталога для конкретного изображения и его последующего сохранения. Да без разницы, это автоматом не сделать.

У меня сразу возникло решение с помощью командного файла CMD

Результат 
Результат

Команды в файле CMD простые до безобразия

@echo off
rem Пакетный файл с данным кодом сохранить в кодировке "OEM-866"!
set cnt=0
for  %%i in (*.jpg *.jpeg *.png) do (
	if not exist "%%~ni" (mkdir "%%~ni")
	copy "%%i" "%%~ni\%%i" /Y
	set /a cnt+=1
)   
@echo ______________________________________________
@echo                 ПОЗДРАВЛЯЕМ!!!
@echo             Обработано %cnt% файлов 
@echo ______________________________________________
pushd "%folder%" 
pause
exit

Что этот скрипт делает?

Изначально в ответе на вопрос он просто выполнял команды в конкретной директории. В той, где был запущен CMD файл.

Я не остановился, и спустя 5 - 15 минут максимум, пока переваривал ))), сделал код более изящным.
Теперь исполняемый файл на вход может принамать аргуметы.

Т. е., достаточно просто перетащить каталог, который вы хотите обработать, на исполняемый файл CMD.

Команды снова остались без изменений, только добавилась проверка на правильность передачи аргументов исполняемому файлу.

@echo off
rem Пакетный файл с данным кодом сохранить в кодировке "OEM-866"!
set folder=%cd%
if exist "%1" (
	if exist %1\* (
		pushd "%1"
	)
)
set cnt=0
@echo ______________________________________________
@echo Обрабатываемая директория:
@echo 		%cd%
@echo ______________________________________________
for  %%i in (*.jpg *.jpeg *.png) do (
	if not exist "%%~ni" (mkdir "%%~ni")
	copy "%%i" "%%~ni\%%i" /Y
	set /a cnt+=1
)   
@echo ______________________________________________
@echo                 ПОЗДРАВЛЯЕМ!!!
@echo             Обработано %cnt% файлов 
@echo ______________________________________________
pushd "%folder%" 
pause
exit

Если вы перетащили папку с файлами изображений на этот исполняемый файл, то он примет её как аргумент и обработает файлы, находящиеся в этом каталоге.

Скачать

Я думаю, что это кому-то пригодится.

Поделиться