Elenca i file in cmd.exe numericamente per impostazione predefinita per generare una gif da una sequenza di frame


0

Saluti e saluti Tutti,

Sto cercando di creare un'animazione usando imagemagick tramite:

convert -delay 80 -loop 0 *.png ani.gif

La logica sta trovando tutti i file .png, tranne che i nomi dei file non sono elencati numericamente. Questo fa sì che la sequenza di animazione sia mal costruita.

per esempio

-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

Ho provato a forzare la directory in un elenco per ora e data senza risultati tramite:

set dircmd=/o:d

Come potrei ottenerlo in modo che i file vengano elencati internamente come:

-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

Quindi, quando viene eseguito il comando di conversione, la sequenza corretta viene premuta in una gif?

Risposte:


1

Presumibilmente il tuo programma di conversione ordina i file in ordine alfabetico per nome quando usi un carattere jolly. La soluzione più semplice sarebbe quella di rinominare i file con zero padding in modo che i nomi dei file vengano ordinati nell'ordine numerico corretto.

Ho scritto un'utilità ibrida JScript / batch chiamata JREN.BAT che può utilizzare la sostituzione di espressioni regolari per rinominare i file. È puro script che viene eseguito in modo nativo su qualsiasi macchina Windows da XP in poi.

JREN.BAT rende la soluzione estremamente semplice (supponendo, ad esempio, che non hai già uno 027.png esistente che sia in conflitto con 27.png):

jren "^\d+(?=\.png)" "lpad($0,'000')" /j

Dopo aver eseguito il comando, un file chiamato 5.png diventerebbe 005.png e 27.png diventerebbe 027.png. Il comando di conversione originale dovrebbe quindi essere in grado di elaborare i file nell'ordine corretto.

Utilizzare jren /?per ottenere la documentazione completa sulle numerose opzioni disponibili per JREN.BAT


Puoi rinominare usando il batch puro, ma non è altrettanto conveniente

@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"
)

o usando PowerShell:dir *.png | foreach {Move $_.Name $_.Name.PadLeft(10,'0')}
Peter Hahndorf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.