首页 > 解决方案 > 如何批量重命名文件为文件夹名称+递增的数字?我收到重复名称错误

问题描述

我一直在尝试创建一个批处理文件来将我的文件重命名为:

“文件夹名_01.jpg、文件夹名_02.jpg等……”

但我的输出将第一个文件重命名为“%~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”

标签: batch-filecommand-lineduplicatesfile-rename

解决方案


您的问题可以通过在嵌套 for 循环中使用延迟扩展来处理递增变量以捕获目录名称

例子:

@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

推荐阅读