2015-10-31 3 views
0

Я хочу обходить папки рекурсивно, и если он отвечает TGA-файлу, тогда выполните преобразование (imagemagic).bat cmd как изменить %% i

echo off 
setlocal enableextensions enabledelayedexpansion 

for/r "D: \ L2" %% i in ("* .tga") do (
     
     set name_old = %% i 

     rem set name_new =! name_old! 
     set name_new =% name_new:~0,-3%png 

     convert% name_old% %name_new% 

     echo del% name_old% 
) 

endlocal 
exit/b 0 

К сожалению, я не понимаю, как получить правильное имя name_new.

+4

Просто любопытно: где у вас этот полностью сломанный синтаксис? – wOxxOm

+0

@wOxxOm, никогда не видел, чтобы кто-нибудь пытался это сделать. Заворачивает мой старый мозг. – Squashman

ответ

1

Не произвольно вставляйте пробелы, он разбивает синтаксис.

Также вам не нужно замедленное расширение изменить расширение файла, просто используйте %%~dpn префикс (см больше примеров, запустив for /?)

Правильный синтаксис:

for /r "D:\L2" %%i in ("*.tga") do (
    convert "%%i" "%%~dpni.png" 
    del "%%i" 
) 
exit /b 0 

P.S. Последняя строка не нужна для автономного .BAT-файла, полезно только вернуться с subroutine.

Смежные вопросы