Batch FOR loop não funciona

2

Então, estou tentando um procedimento de conversão de imagens em um diretório, mas ele simplesmente não funciona, e não consigo ver o que está incorreto no código do meu lote:

FOR /R %a in (*.png) DO (
    files\pngnq -s 1 -n 16 %~fa 
    ren *nq8.png "%~na.png"
    files\gimconv "%~na.png" --format_style psp --format_endian little --pixel_order faster --image_format index4
    del "%~na.png"
    )

o erro que ele produz é em francês "in não era esperado" (in était inattendu).

EDIT: este é o código original (código de trabalho):

set file=*.png
files\pngnq -s 1 -n 16 %file% 
ren *nq8.png 12345.png
files\gimconv 12345.png --format_style psp --format_endian little --pixel_order faster --image_format index4
del 12345.png
ren *.gim READY4BIT.gim
    
por Omarrrio 18.01.2016 / 19:21

1 resposta

2

Não consigo ver o que está incorreto no código do meu lote:

FOR /R %a in (*.png) DO (
    files\pngnq -s 1 -n 16 %~fa 
    ren *nq8.png "%~na.png"
    files\gimconv "%~na.png" --format_style psp --format_endian little --pixel_order faster --image_format index4
    del "%~na.png"
    )

Eu posso ver dois problemas óbvios com o código acima:

  1. Em um arquivo de lote, é necessário substituir % por %% (em um arquivo em lotes use %% a, em cmd shell use %a )

  2. Existe a possibilidade de alguns arquivos serem processados duas vezes, então você deve usar for /f junto com dir ).

Pode haver outras coisas erradas também, mas eu não tenho os programas necessários para testá-lo.

Use o seguinte arquivo em lotes:

for /f "tokens=*" %%a in ('dir /b *.png') do (
    files\pngnq -s 1 -n 16 %%~fa 
    ren *nq8.png "%%~na.png"
    files\gimconv "%%~na.png" --format_style psp --format_endian little --pixel_order faster --image_format index4
    del "%%~na.png"
    )

Nota:

It is critical that you use FOR /F and not the simple FOR.

The FOR /F gathers the entire result of the DIR command before it begins iterating, whereas the simple FOR begins iterating after the internal buffer is full, which adds a risk of renaming the same file multiple times.

como recomendado pelo dbenham em sua resposta para adicione" texto "ao final de vários nomes de arquivos :

Leitura Adicional

por 18.01.2016 / 19:43