2010-01-18 5 views
2

J'essaie actuellement de traiter un tas de fichiers avec ImageMagick en utilisant un fichier de commandes dans les fenêtres, ils sont tous comptés numériquement suit: image00 image01, image02, ..., image010, image011, ..., image0100, image0101fichiers batch: Traitement des fichiers dans Alphbetical (numérique peut-être>) Commander

et ainsi de suite, mais lorsque je tente de traiter le fichier qu'il veut exécuter si image00, image01, image010, image0100, image0101, image0 102 et ainsi de suite.

mon code est comme suit


SETLOCAL EnableDelayedExpansion
SET COUNT=0
FOR %%a in (*.bmp) DO
(
IF !ERRORLEVEL!==0
(
SET TFILE=0!COUNT!
SET TFILE=Terrain!TFILE:~-4!.jpg
SET /A COUNT+=1
ECHO %%a >output.txt
convert %%a -compress LOSSLESS !TFILE!
)
)

est-il possible que je puisse faire en sorte qu'il traitera ces fichiers afin, pour le moment j'ai un travail autour, mais cela signifie que Je dois continuellement changer certains fichiers de script lorsque les images sont utilisées plus tard. Je préférerais que tous les fichiers aient le même nom "Terrain" avec un nombre croissant de numéros.

Merci d'avance les gars!

+0

Pourquoi l'ordre dans lequel les fichiers sont traités est-il important? –

+0

Eh bien mon code prend des images plus grandes et obtient une sous-image décidée en longitude et latiude et pixels par minute, puis les divise en plus petites images et les numérote, je veux prendre ces images, les renommer et les garder dans le même ordre numérique , J'utilisais un compteur mais j'ai légèrement changé la façon dont je l'ai fait et j'utilise maintenant des sous-chaînes, donc peu importe l'ordre dans lequel elles sont traitées. – Craig

Répondre

1

vous pouvez probablement créer plus de code de lot pour "trier" les numéros par ordre, cependant, puisque vous pouvez utiliser imagemagick, je suppose que vous pouvez également télécharger d'autres choses. Ma suggestion est que vous pouvez essayer et utiliser le tri GNU (en coreutils). Ensuite, dans votre lot, faire quelque chose comme ça

pseudocode:

for ... (dir /b *bmp | gnu_sort -n) do (
    echo "do your stuff" 
) 

vous pourriez probablement vérifier si le genre qui vient avec Windows a une option de tri numérique. (la dernière fois que je le vérifie n'a pas cette option).

1

Vous pouvez renommer les fichiers à image000 image001, image002, ..., image010,

Vous pouvez diviser le nom du fichier quelque chose comme ceci:

@echo off 

    setlocal ENABLEDELAYEDEXPANSION 

    if not defined TRACE (
     set TRACE=REM 
    ) 

    %TRACE% On 

    for %%a In (data\*.*) do call :EachFile %%a 


    endlocal 

goto :eof 


:EachFile %%a 
    set Name=%~n1 
    @Echo %Name% 

    set NUm=%Name:~6,9% 
    set /a Num=Num+100000 
    @echo %Num% 

    echo ren %1 %~dp1Image%Num%%~x1 
goto :eof 
1

Il est difficile de trouver, parce que ce n'est pas vraiment évident à partir de la documentation. La solution consiste à utiliser la commande FOR en combinaison avec la commande dir. Je ferais quelque chose comme ceci:

@echo off 
ECHO Listed in name order: %1 
ECHO ------------------------------------------------------ 
FOR /F "tokens=*" %%G IN ('dir /b /o:n %1') DO echo %%G 
Questions connexes