Windows批处理:查找字符串包含for循环内的另一个字符串

时间:2015-07-28 08:38:48

标签: batch-file webp

我正在尝试使用cwebp编码器将一组PNG图像转换为WEBP图像。 我设法使用JAVA程序,但现在我想写一个批处理文件来完成这项任务。 经过一番搜索,我已经获得了 metal03326的 solution。 但我希望在此修改一下,应该跳过9个补丁图像。

这是我做的:

pushd %1

set "DOTNINE=.9"

echo %DOTNINE%

for /f "delims=" %%n in ('dir /b /s /a-d-h-s') do (

set MY=%%~nn

set MY=%MY:~-2%

rem IF NOT ".webp" == "%%~xn" IF NOT "MY" == ".9" ("%~dp0cwebp.exe" -q 80 "%%n" -o "%%n.webp") ELSE (echo File already WEBP.)

)

popd

但我收到语法错误。上面的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

要在循环中多次重新分配变量(即MY),您必须使用delayed expansion

setlocal enableDelayedExpansion
pushd "%~1"
for /f "delims=" %%n in ('dir /b /a-d-h-s') do (
    set MY=%%~nn
    set MY=!MY:~-2!
    IF NOT ".webp" == "%%~xn" IF NOT "!MY!" == ".9" ("%~dp0cwebp.exe" -q 80 "%%n" -o "%%n.webp") ELSE (echo File already WEBP.)
)
popd