Abaixo, funciona bem para mim, por isso, caso ache útil resolver o problema com a memória desses comandos em seu caso específico, estou fornecendo uma resposta.
Eu sei que seu exemplo está usando um loop FOR / D e usando isso para iterar em outro loop FOR , mas usando um único FOR / F do loop junto com o < O comando strong> DIR e as opções aplicáveis parecem ajudar a garantir que cada conversão iterada, etc., esteja em uma nova instância de memória.
Sobrescrever arquivos convertidos no local
@ECHO ON
SET Source=C:\SourceFolder\Images
SET Ext=*.jp2
FOR /F "DELIMS=" %%A IN ('DIR /A-D /S /B "%Source%\%Ext%"') DO convert -limit memory 0 -limit map 0 "%%~A" -quality 25 "%%~A"
GOTO EOF
Saída de arquivos convertidos em um diretório de saída
@ECHO ON
SET Source=C:\SourceFolder\Images
SET Output=C:\Output\jpg
SET Ext=*.jp2
FOR /F "DELIMS=" %%A IN ('DIR /A-D /S /B "%Source%\%Ext%"') DO convert -limit memory 0 -limit map 0 "%%~A" -quality 25 "%Output%\%%~NXA"
GOTO EOF