По умолчанию список файлов в cmd.exe численно для создания GIF из последовательности кадров
Приветствия и приветствия всем,
Я пытаюсь создать анимацию, используя imagemagick через:
convert -delay 80 -loop 0 *.png ani.gif
Логика заключается в нахождении всех файлов.png, за исключением того, что имена файлов не перечислены численно. Это приводит к тому, что последовательность анимации будет плохо построена.
например
-a--- 3/17/2015 8:36 PM 14147 26.png
-a--- 3/17/2015 8:37 PM 13904 260.png
-a--- 3/17/2015 8:37 PM 13981 261.png
-a--- 3/17/2015 8:37 PM 13863 262.png
-a--- 3/17/2015 8:37 PM 14026 263.png
-a--- 3/17/2015 8:37 PM 14023 264.png
-a--- 3/17/2015 8:37 PM 14038 265.png
-a--- 3/17/2015 8:37 PM 13913 266.png
-a--- 3/17/2015 8:37 PM 14003 267.png
-a--- 3/17/2015 8:37 PM 14000 268.png
-a--- 3/17/2015 8:37 PM 13887 269.png
-a--- 3/17/2015 8:36 PM 14025 27.png
Я пытался заставить каталог к списку по времени и дате, но безрезультатно:
set dircmd=/o:d
Как я мог получить это так, чтобы файлы были внутренне перечислены как:
-a--- 3/17/2015 8:36 PM 14147 26.png
-a--- 3/17/2015 8:36 PM 14025 27.png
-a--- 3/17/2015 8:37 PM 13904 260.png
-a--- 3/17/2015 8:37 PM 13981 261.png
-a--- 3/17/2015 8:37 PM 13863 262.png
-a--- 3/17/2015 8:37 PM 14026 263.png
-a--- 3/17/2015 8:37 PM 14023 264.png
-a--- 3/17/2015 8:37 PM 14038 265.png
-a--- 3/17/2015 8:37 PM 13913 266.png
-a--- 3/17/2015 8:37 PM 14003 267.png
-a--- 3/17/2015 8:37 PM 14000 268.png
-a--- 3/17/2015 8:37 PM 13887 269.png
Тогда, когда команда конвертирования запущена, правильная последовательность будет нажата в GIF?
1 ответ
Предположительно, ваша программа конвертирует файлы в алфавитном порядке по имени, когда вы используете подстановочный знак. Простейшим решением было бы переименовать файлы с нулевым заполнением, чтобы имена файлов сортировались в правильном числовом порядке.
Я написал гибридную утилиту JScript/batch под названием JREN.BAT, которая может использовать замену регулярных выражений для переименования файлов. Это чистый скрипт, который запускается изначально на любой машине с Windows начиная с XP.
JREN.BAT делает решение чрезвычайно простым (при условии, например, что у вас еще нет существующего 027.png, который конфликтует с 27.png):
jren "^\d+(?=\.png)" "lpad($0,'000')" /j
После выполнения команды файл с именем 5.png станет 005.png, а 27.png - 027.png. Ваша исходная команда преобразования должна затем обрабатывать файлы в правильном порядке.
использование jren /?
чтобы получить полную документацию по множеству опций, доступных для JREN.BAT
Вы можете сделать переименование, используя чистую партию, но это не так удобно
@echo off
setlocal enableDelayedExpansion
for /f "delims=" %%F in (
'dir /b /a-d ???.png ^| findstr "^[0-9][0-9]*\.png$" /i'
) do (
set "num=000%%~nF"
ren "%%F" "!num:~-3!%%~xF"
)