Ваша ошибка в том, что вы неправильно используете команду REName
.
Это можно заметить, введя Ren /?
в командной строке, который показывает синтаксис:
REN [drive:][path]filename1 filename2
Однако вы, похоже, используете:
REN [drive:][path]filename1 [drive:][path]filename2
…, что приведет к ошибке:
Синтаксис команды неверен.
В качестве простого исправления для вашего сценария вам нужно изменить следующую строку:
set "str=%str:[1]=%"
на:
set "_fnlf=%str:[1]=%"
Затем удалите строку:
SET "_fnlf=%_filep%%str%"
Если вы хотите привести в порядок код, вы можете изменить его на:
@Echo Off
Set "i=0"
For /F "Delims=" %%A In ('Dir /B/AD "%svnLOCAL%" 2^>Nul') Do (
Set /A i+=1
For /F "Delims=" %%B In ('Dir /B/A-D "%~dp0%%A\*[1]*" 2^>Nul') Do (
Set "$=%%~nB"
Call Ren "%~dp0%%A\%%B" "%%$:[1]=%%.jpg"
)
)
Echo "%i%"
Pause
или использовать DelayedExpansion:
@Echo Off
Set "i=0"
For /F "Delims=" %%A In ('Dir /B/AD "%svnLOCAL%" 2^>Nul') Do (
Set /A i+=1
For /F "Delims=" %%B In ('Dir /B/A-D "%~dp0%%A\*[1]*" 2^>Nul') Do (
Set "$=%%~nB"
SetLocal EnableDelayedExpansion
Ren "%~dp0%%A\%%B" "!$:[1]=!.jpg"
EndLocal
)
)
Echo "%i%"
Pause
Вдва примера выше, я взял ваш комментарий, where filerename.bat is run
, чтобы обозначить каталог, в котором находится этот скрипт, filerename.bat
.Если вы имели в виду текущий рабочий каталог, , который не обязательно совпадает с , вы должны заменить экземпляры %~dp0
выше на %__CD__%
.
Кроме того, как неИсходя из предоставленной вами информации , я предположил, что %svnLOCAL%
уже определено.