Как переименовать файлы в имя папки + увеличенные номера в пакете? Я получаю Duplicate Name Error - PullRequest
0 голосов
/ 11 января 2020

Я пытался создать командный файл, чтобы переименовать мои файлы в:

"Foldername_01.jpg, Foldername_02.jpg, et c ..."

но мой вывод переименовывает первый файл как "% ~ dp00.jpg", а остальные возвращают ошибку

"Дубликат файла существует, или файл не найден"

Мой код:

@echo off
set /a count = 0

for %%a in (*.jpg) do (
    set /a count+=1
    ren "%%a" "%%~dp0_%count%.jpg" 
    )

pause

Я не понимаю, почему переменная count не добавляет 1 из каждой записи и что файл переименовывается в "% ~ dp0 + count + .ext ", а не его" имя папки + count + .ext "

1 Ответ

1 голос
/ 11 января 2020

Ваша проблема может быть решена с помощью отложенного расширения, для вашей переменной приращения , внутри вложенного для l oop, для захвата имени каталога .

Пример:

@Set "count=0"
@For /F "Delims=" %%I In ('Dir /B/S/A-D-S "*.jpg" 2^>NUL')Do @(
    For %%J In ("%%~pI.")Do @(Set /A count+=1
        SetLocal EnableDelayedExpansion
        Ren "%%I" "%%~nxJ_!count!%%~xI"
        EndLocal))
@Pause
...