for %%a in (.\*.jpg) do @if %%~za gtr 245760 (
:WhileD
resize /overwrite /width:imagewidth-100 %%a %%~na.jpg
if %%~za gtr 245760 goto WhileD
)
上面的代码应检查文件夹中的所有图像,如果它大于240KB,则调整大小直到其大小小于240KB,然后处理到下一个文件,
但它不起作用:(
答案 0 :(得分:2)
goto
命令中断循环。使用例程来包含goto
个子循环。for %%a in (.\*.jpg) do @if %%~za gtr 245760 ( call :WhileD "%%~a" ) else echo add move command here.
exit /b 0
:WhileD <File>
resize /overwrite /width:imagewidth-100 %1 %~n1.jpg
if %~z1 gtr 245760 goto WhileD
exit /b 0
答案 1 :(得分:2)
:WhileD
for %%a in (.\*.jpg) do if %%~za gtr 245760 (
resize /overwrite /width:imagewidth-100 %%a %%~na.jpg
goto WhileD
)
这应该可以解决问题。
答案 2 :(得分:1)
试试这个
FOR %%A IN (*.jpg) DO CALL :CHECKFILE %%A %%~nA
EXIT /B 0
:CHECKFILE
FOR /F "usebackq" %%A IN ('%1') DO SET FSIZE=%%~zA
IF %FSIZE% LEQ 245760 EXIT /B 0
resize /overwrite /width:imagewidth-100 %1 %2.jpg
GOTO CHECKFILE