条件为True时对文件执行命令

时间:2014-02-14 18:24:52

标签: windows batch-file

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,然后处理到下一个文件,

但它不起作用:(

3 个答案:

答案 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