Classificando arquivos em ordem numérica

0

Tenho várias imagens tiff ordenadas de 1 a 246. As converti em um arquivo PDF usando imagemagick com convert *.tif out.pdf . No entanto, a ordem das páginas dentro do arquivo pdf é diferente; (por exemplo, a página 2 é a imagem 10 e assim por diante). Quando executo dir ou ls , recebo arquivos não ordenados como os seguintes:

21/06/2018  16:15    <DIR>          .
21/06/2018  16:15    <DIR>          ..
21/06/2018  15:51             2.056 1.tif
21/06/2018  15:51            98.710 10.tif
21/06/2018  15:51            96.492 100.tif
21/06/2018  15:51            44.064 101.tif
21/06/2018  15:51            70.960 102.tif
21/06/2018  15:51            85.254 103.tif
21/06/2018  15:51            92.750 104.tif
21/06/2018  15:51            87.672 105.tif
21/06/2018  15:51            90.284 106.tif
21/06/2018  15:51            79.532 107.tif
21/06/2018  15:51            85.956 108.tif
21/06/2018  15:51            22.452 109.tif
21/06/2018  15:51            91.796 11.tif
(...)

O que eu quero:

21/06/2018  16:15    <DIR>          .
21/06/2018  16:15    <DIR>          ..
21/06/2018  15:51             2.056 1.tif
21/06/2018  15:51            98.710 2.tif
21/06/2018  15:51            96.492 3.tif
21/06/2018  15:51            44.064 4.tif
21/06/2018  15:51            70.960 5.tif
21/06/2018  15:51            85.254 6.tif
21/06/2018  15:51            92.750 7.tif
21/06/2018  15:51            87.672 8.tif
21/06/2018  15:51            90.284 9.tif
21/06/2018  15:51            98.710 10.tif
21/06/2018  15:51            91.796 11.tif
(...)

Como posso classificar os arquivos em ordem numérica?

    
por ahmelq 21.06.2018 / 15:42

2 respostas

3

Use o seguinte arquivo de lote para renomear arquivos para usar o nome de 3 dígitos. Em seguida, você pode usar a ordem de classificação padrão das janelas para tornar o arquivo PDF correto.

@echo off
setlocal enableextensions enabledelayedexpansion
for %%f in (*.tif) do (
    set FileName=%%~nf
    set FileName=00!FileName!
    set FileName=!FileName:~-3!
    set FileName=!FileName!%%~xf
    ren "%%f" "!FileName!"
)

Ao executar o arquivo de lote acima, o nome do arquivo será alterado para 001.tif, 002.tif, 020.tif... etc . imagemagick usará a ordem de classificação padrão e gerará o PDF correto.

    
por 21.06.2018 / 16:52
3

Você se importa com algum powershell? Como, por exemplo:

$D = get-childitem
$B = foreach ($F in $D) {
  "{0,30}" -f  $F.Name
}
$B | sort

produzindo:

PS C:\temp\test> c:\temp\numdir.ps1
                     1.txt
                     2.txt
                    10.txt
                   100.txt
    
por 21.06.2018 / 16:35