2

Поэтому я пытаюсь выполнить процедуру преобразования изображений в каталоге, но она просто не запускается, и я не вижу, что неверно в моем пакетном коде:

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

ошибка, которую он выводит, на французском "in not not Ожидается" (in thetait inattendu).

РЕДАКТИРОВАТЬ: это оригинальный (рабочий код) код:

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

1 ответ1

2

Я не вижу, что не так в моем коде пакета:

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

Я вижу две очевидные проблемы с приведенным выше кодом:

  1. В пакетном файле вам нужно заменить % на %% (в пакетном файле используйте %% a, в командной оболочке cmd используйте %a)

  2. Существует вероятность того, что некоторые файлы могут быть обработаны дважды, поэтому вы должны использовать for /f вместе с dir).

Могут быть и другие проблемы, но у меня нет необходимых программ для проверки.

Вместо этого используйте следующий пакетный файл:

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

Замечания:

Крайне важно, чтобы вы использовали FOR /F а не простой FOR .

FOR /F собирает весь результат команды DIR перед началом итерации, тогда как простой FOR начинает выполнять итерацию после заполнения внутреннего буфера, что повышает риск переименования одного и того же файла несколько раз.

как советовал dbenham в своем ответе, чтобы добавить "текст" в конец нескольких имен файлов:


Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .