У меня есть файл .bat, который применит несколько быстрых преобразований ImageMagick к большой коллекции подкаталогов. Мне нужно, чтобы этот скрипт также отправлял выходные файлы в AWS S3 с помощью утилиты S3Express (вариант S3cmd для Windows).
echo off
set dest=destination-bucket/testfolder/
for /D %%d in (*) do (
cd %%d
md small
convert %1 -resize 350x350 -quality 80 -strip ./small/image.jpg
md medium
convert %1 -resize 640x640 -quality 80 -strip ./medium/image.jpg
md large
convert %1 -resize 1080x1080 -quality 30 -strip ./large/image.jpg
md xlarge
convert %1 -resize 1440x1440 -quality 30 -strip ./xlarge/image.jpg
cd..
"C:\Program Files\S3Express\S3Express.exe"
put %%d %dest% -s -cacl:public-read -cond:"name matches 'image.jpg'"
REM -s == recursive (replicates subfolder structure)
REM -cacl == canned access control list (ACL) :: Everyone gets READ access
REM -cond == filter :: only pushes "image.jpg" files.
)
Названный как «conv.bat», я бы запустил его как «conv image.jpg».
Проблема возникает с командой "put", которая представляет собой команду S3Express.
Как я могу заставить свой скрипт подключать команду put к S3Express в конце каждого цикла? В своем текущем состоянии сценарий проходит через цикл один раз и останавливается после открытия «S3Express.exe».
Возможно, важно отметить, что это мой первый пакетный скрипт, и я впервые использую S3Express.
md small med large xlarge
одним выстрелом, а не стрелять 4 раза. Вы также можете сделать все свои мгновенные сообщенияconverts
одним кадром и сэкономить много времени, если у вас много изображений...convert %1 -strip \( +clone -resize 350x350 -quality 80 -write small/image.jpg \) \( +clone -resize 640x640 -quality 80 -write med/image.jpg \) ... -resize 1440x1440 -quality 30 large/image.jpg
- person Mark Setchell   schedule 07.01.2015